题目:创建一个包含一个float域的类,并且用这个类展示别名机制
分析:别名机制,听起来很陌生,其实在讲一个很简单的事情。首先来谈一下引用的概念。
我们在操作一个类的时候,我们真正操作的是它的引用。我们可以把它的引用赋值给不同名字的变量,这就构成了别名。因为不同的名字包含着相同的引用。
class Tube { float level; } public class test { public static void main(String[] args) { Tube t1 = new Tube(); Tube t2 = new Tube(); t1.level = 0.9f; t2.level = 0.47f; System.out.println("1: t1.level: " + t1.level + ", t2.level: " + t2.level); t1 = t2; System.out.println("2: t1.level: " + t1.level + ", t2.level: " + t2.level); t1.level = 0.27f; System.out.println("3: t1.level: " + t1.level + ", t2.level: " + t2.level); } }
输出为:
1: t1.level: 0.9, t2.level: 0.47 2: t1.level: 0.47, t2.level: 0.47 3: t1.level: 0.27, t2.level: 0.27
我们可以看到第一行输出是不同的,因为t1和t2包含的是不同的引用。第二行是相同的因为执行了t1=t2,两个变量包含了相同的引用,改变对象的属性,当然两个变量的值都会变,因为他们本质上是一样的,只是名字不一样而已。