如果我从数组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