簡體   English   中英

對象初始化-Java

[英]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; 只是傳遞的參考aaa ,這意味着,這兩個點對同一個對象。 您可以通過打印aaa的哈希碼來驗證這一點。

在第一種情況下A aa = a; aaa上調用hashCode()都會產生相同的結果,因為兩者都指向同一個Object。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM