簡體   English   中英

在java中引用對象

[英]Referencing objects in java

在java中,以下2個用法有什么區別,

Employee e1 = new Employee();  
1.Employee e2 = (Employee)e1.clone();  
2.Employee e2 = e1;

在第二種情況下,我認為e2引用了e1也引用的對象。 因此,它們具有相同的具有不同參考編號的對象(可以是存儲器地址)。

第一種情況怎么樣? e1和e2是否有不同的對象和參考?

第一個通過克隆原始對象的數據來創建一個新對象 - 該類必須實現Clonable接口(一個很好的例子是java.util.Calendar )。

第二個僅僅是對同一個對象的另一個引用。

在第一種情況下,您要實例化一個新對象並將引用存儲在e1中。

假設您在下一步中更改薪水e1.setSalary(10000);

然后,如果克隆了e1對象,那么Employee e2 = (Employee)e1.clone(); 將保存一個帶有工資的新實例作為存儲在e1中的當前值。 基本上e2將是Employee Class的一個新實例,其工資為10000

如果你以后改變e2的工資,它不會影響e1 例如。 e2.setSalary(2000); 那么e1中的工資將保持不變e1 - > 10000e2 - > 2000

在第三步中,您將e1引用到e2,即e2將指向由e1引用的實例,e1和e2將指向同一實例... 因此克隆的對象將類似於沒有引用的對象,這符合以下條件: gc采取行動

要了解有關克隆的更多信息,可以參考這篇文章https://stackoverflow.com/a/9834683

暫無
暫無

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

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