簡體   English   中英

當我們調用ArrayList.add()方法時會發生什么?

[英]What happens when we call ArrayList.add() method?

當我們調用ArrayList.add()方法時,它是創建一個新對象並將其添加到列表中還是將引用的對象添加到列表中?

例如:假設我們有兩個ArrayList ,如下所示:

ArrayList<ClassA> a1ArrayList<ClassA> a2 如果我運行代碼:

a2.add(a1.get(i))會創建一個新對象,然后將其添加到a2還是會從兩個不同的列表中引用同一對象?

它不是副本

Java是按值傳遞還是按引用傳遞問題?

因為我想知道ArrayList.add()方法的內部工作,是否會創建傳遞的參數的對象副本?

它將在兩個不同的列表中引用同一對象。

當然,您始終可以通過一些調試工作來驗證這一點。

您只能將引用或原語傳遞給方法。 此方法也不例外。

 ArrayList<String> list = new ArrayList<>();
 String s = "Hello";
 list.add(s); // pass the reference.

a2.add(a1.get(i))會創建一個新對象,然后將其添加到a2還是會從兩個不同的列表中引用同一對象?

這意味着兩個列表都具有相同引用的副本(指向相同的對象)

它將從這兩個不同的列表中引用同一對象,這意味着,如果您從一個位置編輯該對象,則另一個位置也會受到影響。

如果您不想這樣做,請考慮使該類immutable

暫無
暫無

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

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