如果我從數組2陣列1和INSTANCE2得到INSTANCE1,他們將返回不同的指針位置或相同?
是的,如果他們都指的是同一個對象,==
將返回true。
ArrayList將精確地存儲你給它的東西。如果您給它一個參考(「地址」),它將存儲該地址。當你獲取那個特定的元素時,你會得到相同的參考。
示例代碼段:
Object o = new Object();
List<Object> l1 = new ArrayList<Object>();
List<Object> l2 = new ArrayList<Object>();
l1.add(o);
l2.add(o);
Object o1 = l1.get(0);
Object o2 = l2.get(0);
System.out.println(o1 == o2); // prints true
在某種意義上ArrayList中並但是做一個副本,該片段說明,列表不會受到影響改變s
時(參考值的!):
String s = "hello";
List<String> l = new ArrayList<String>();
l.add(s);
s = "world";
System.out.println(l.get(0)); // prints hello
基本上==
比較變量的內容。由於引用的內容是「地址」,因此使用==
進行比較引用只會在兩個引用引用同一對象時纔會生成真值。
o1.equals(o2)
另一方面比較o1
和o2
所指的實際物體。
是否存儲指針位置爲關鍵還是實際的對象?如果我有兩個具有相同內容但實際上是不同對象的對象,它仍然可以工作嗎?
它使用實際的對象作爲關鍵。如果您有兩個單獨的對象,即equal
,則可以使用其中一個來檢索爲該密鑰存儲的值。
我敢肯定==操作符看起來在指針位置
這是吹毛求疵,但是,沒有,==
看着指針內容,或對象位置。
你問題的最後部分是非常不清楚的 - 請編輯你的問題來澄清它。 –
是的,編輯。希望有所幫助。 – Pwnna