2015-08-16 117 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時創建的對象。