我是Java新手。對象初始化 - Java
我想問一下關於對象的初始化。首先,我要上課。
public class A {
....
}
然後在主類中,A類被實例化。
A a = new A();
現在,問題是,這兩個代碼是否相同?
A aa = a;
和
A aa = new A();
我是Java新手。對象初始化 - Java
我想問一下關於對象的初始化。首先,我要上課。
public class A {
....
}
然後在主類中,A類被實例化。
A a = new A();
現在,問題是,這兩個代碼是否相同?
A aa = a;
和
A aa = new A();
不,他們完全不同!
A aa = a;
然後aa
和a
refert到在存儲器中的相同對象。
A aa = new A();
然後aa是一個新的對象。你現在在堆棧上有兩個對象。
A a = new A();
A aa = a;
AA指的是同一個對象。
A aa = new A();
about語句創建了一個不同於a的類型A的新對象。
不,它們是不同的。 雖然A aa = new A();
創建一個新的對象類型A, A aa = a;
只是通過參考a
aa
,這意味着,這兩個指向同一個對象。 您可以通過打印a
和aa
的哈希碼來驗證。
在第一種情況下A aa = a;
在aa
和a
上調用hashCode()
都會產生相同的結果,因爲它們都指向相同的對象。
在第二種情況下,A aa = new A();
調用hashCode()
將產生不同的結果,因爲您正在創建一個全新的A
實例。
A aa = a
將使引用一個對象,但是
A aa = new A();
將A型的新對象
不一樣 - 在第一種情況 - 兩個引用指向同一個對象在第二種情況下,兩個單獨的A對象。 – hovanessyan