将一个对象赋值给另一个对象,实际是将引用从一个地方复制到另一个地方。这意味着假若对对象使用c=d,那么c和d都指向原本只有d指向的那个对象,下面这个例子将向大家阐释这点。
package gao.com; class Test{ int number; } public class Assigment { public static void main(String[]args){ Test t1=new Test(); Test t2=new Test(); t1.number=25; t2.number=32; System.out.println("t1.number="+t1.number+" t2.number="+t2.number); t1=t2; System.out.println("t1.number="+t1.number+" t2.number="+t2.number); t1.number=1; System.out.println("t1.number="+t1.number+" t2.number="+t2.number); } } /* 输出 t1.number=25 t2.number=32 t1.number=32 t2.number=32 t1.number=1 t2.number=1 */
Test 类非常简单,它的两个实例是在main()里创建的。对每个Test类对象number域都赋予了一个不同的值。然后将t2赋给t1,接着又修改了t1.在很多语言中我们会期望t1和t2总是相互独立,但由于赋值操作是一个对象的引用,所以修改t1的时候也改变了t2,这是由于t1和t2包含相同的引用,它们指向相同的对象。
时间: 2024-10-31 01:42:15