2015-08-16 110 views
-1
class Test { 

    String name; 
    Test(String name){ 
     this.name = name; 
    } 
    public static void main(String args[]) { 
     Test t1 = new Test("Rakesh"); 
     Test t2 = new Test("Rakesh"); 
     System.out.printLn(t1 == t2); 
    } 
} 

它给输出false因为t1和t2具有两个不同的对象,并将其== 检查仅引用。这很好,但是当我这样做时参考变量混淆

t1=t2; 

Tlthe output returns true

问题是,t1t2是类Test的两个新对象,并由new关键字创建。那么它的参考如何可以相等呢?

回答

1

当您指定t1=t2时,两个引用都引用同一个对象(您在Test t2 = new Test("Rakesh");中创建的第二个对象),因此t1==t2成为true。

作业完成后,由Test t1 = new Test("Rakesh");创建的对象不再引用它,这意味着它可以被垃圾收集。

0

t1=t2t1t2都指向同一object.i.e t1现在指向或存储该对象的引用通过t2指向。因此t1t2现在指向相同的对象。所以他们的参考是平等的。

0

当您执行t1 = t2时,您将对象t2分配给对象t1,因此使它们成为相同的对象。如果您之前使用new关键字将它们创建为独立对象,则无关紧要。

本质上,你放弃了最初在你将t2赋值给t1时创建的对象。