2015-02-10 53 views
1

對於ArrayLists持有對象引用的含義,我有點困惑。有人可以給我一個關於如何在代碼中顯示的例子嗎?另外,arraylist可以有一個元素是一個參考自己?謝謝!ArrayList對象的引用

+1

您是否一般知道,參考是什麼? – Tom 2015-02-10 03:30:28

+0

我相信一個引用是一個對象引用的東西..例如.. String hello = new String(); hello是對字符串對象的引用。我對麼? – swordhunter2000 2015-02-10 03:35:51

+0

Tom的問題很好,但我會說在Java中我們通常不會區分「對象的引用」和「對象」。如果有人告訴我列表中存有「引用對象」,我只是想提醒一下,如果對象在列表外被更改,列表中的對象也是如此:它們是同一個對象。 – DavidS 2015-02-10 03:36:30

回答

0

這意味着不是將對象逐字節地複製,而是將對存儲對象的存儲位置的引用放入列表中。

List<Object> objects = new ArrayList<Object>(); 
Object myObject = new Object(); 
objects.add(myObject); 
// objects contains one reference to myObject 

objects.get(0).modify(); 
// myObject modified 

請注意,原始值(例如int)將被複制。

0

您必須開始區分變量,值和對象。

變量是容器。它們包含值。

值可以是原型和參考兩種類型。參考值是指向對象的指針。

對象是也有行爲的數據結構。

所以在

Object var = new Object(); 

var是一個變量。 new Object()是一個新的實例創建表達式,其值爲Object,該值是對Object類型對象的引用。然後將該值分配給var

然後可以使用var調用方法

var.toString(); 

運行時環境將評估var,其產生的基準值,檢索被引用的對象,並調用方法。您可以通過執行

var = someOtherValue; 

現在var將舉行新的價值重新分配存儲在var值。

ArrayList在幕後使用數組。一個數組是一個特殊的對象,它的元素(你可以認爲是字段)本身就是變量。

所以

Object[] arr = new Object[10]; 

是含有10個變量Object類型的陣列。這些變量包含類型Object的值。再次,這些值是參考。您可以評估它們,也可以重新分配它們。

arr[3].toString(); 
arr[7] = "maybe a string"; 
arr[9] = arr[9]; // possible, but makes no sense