[英]Object Initialization - Java
我是Java新手。
我想問一下對象初始化。 首先,我上課。
public class A {
....
}
然后在主類中實例化A類。
A a = new A();
現在的問題是,這兩個代碼是否相同?
A aa = a;
和
A aa = new A();
A aa = a
將引用對象a,但是
A aa = new A();
將創建一個類型為A的新對象。
A a = new A();
A aa = a;
aa指的是同一對象。
A aa = new A();
關於語句創建了一個不同於a的類型A的新對象。
不,他們是完全不一樣的!
A aa = a;
然后aa
和對內存中相同對象a
引用。
A aa = new A();
那么aa是一個新對象。 現在,您在堆棧上有兩個對象。
不,他們不同。 而A aa = new A();
創建一個新的A類型的對象, A aa = a;
只是傳遞的參考a
至aa
,這意味着,這兩個點對同一個對象。 您可以通過打印a
和aa
的哈希碼來驗證這一點。
在第一種情況下A aa = a;
在aa
和a
上調用hashCode()
都會產生相同的結果,因為兩者都指向同一個Object。
在第二種情況下A aa = new A();
調用hashCode()
會產生不同的結果,因為您正在創建A
全新實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.