2014-04-29 130 views
0

我是Java新手。對象初始化 - Java

我想問一下關於對象的初始化。首先,我要上課。

public class A { 

    .... 

} 

然後在主類中,A類被實例化。

A a = new A(); 

現在,問題是,這兩個代碼是否相同?

A aa = a; 

A aa = new A(); 
+0

不一樣 - 在第一種情況 - 兩個引用指向同一個對象在第二種情況下,兩個單獨的A對象。 – hovanessyan

回答

0

不,他們完全不同!

A aa = a; 

然後aaa refert到在存儲器中的相同對象。

A aa = new A(); 

然後aa是一個新的對象。你現在在堆棧上有兩個對象。

0
A a = new A(); 
A aa = a; 

AA指的是同一個對象。

A aa = new A(); 

about語句創建了一個不同於a的類型A的新對象。

0

不,它們是不同的。 雖然A aa = new A();創建一個新的對象類型A, A aa = a;只是通過參考aaa,這意味着,這兩個指向同一個對象。 您可以通過打印aaa的哈希碼來驗證。

在第一種情況下A aa = a;aaa上調用hashCode()都會產生相同的結果,因爲它們都指向相同的對象。

在第二種情況下,A aa = new A();調用hashCode()將產生不同的結果,因爲您正在創建一個全新的A實例。

1
A aa = a 

將使引用一個對象,但是

A aa = new A(); 

將A型的新對象