对处理对象而言,理解引用至关重要。
引用是一个地址,它指名了对象的变量和方法的存储位置。
将对象赋给变量或将参数传递给方法时,您实际上并没有使用对象,您甚至没有使用对象的拷贝,您使用的是对象的引用。
为更好的说明这种差别,下面程序引用了工作原理。
例1:
答案:Point1: 200, 200
Point2: 200, 200
在程序前半段部分执行如下操作。
第5行:创建两个Point变量。
第6行:将一个新的Point对象赋给pt1。
第7行:将pt1的值赋给pt2。
第9-12行:是比较微妙的。将pt1的变量x和y都设置为200,然后将pt1和pt2的所有变量都显示在屏幕上。
您可能认为pt1和pt2用不同的值,然而输出表明,情况并非如此,正如你看到的,pt2的变量x和y也被修改
了,虽然在程序中没有对它们做任何显示的修改。
这是因为第7行让pt2引用pt1,而不是将pt1的拷贝赋给pt2。
pt2引用的对象与pt1相同,如图(1)所示。它们都可以来引用该对象或修改它的变量。
要让pt1和pt2指向不同的对象,可以在第6行和第7行分别使用new Point()语句来创建不同的对象,如下所示:
pt1= new Point(100,100);
pt2 = new Point(100,100);
摘自—《21天学通JAVA 6》