如果我在代码中更新一个对象,它是否会在任何地方更新它,还是我必须刷新它?
例如:
arraylist包含对象Cat
ArrayList<Cat> cats = new ArrayList<Cat>();
Cat Abbie = new Cat("Abbie");
cats.put(Abbie);
如果我在此之外改变Abbie,我是否需要在arraylist中刷新Abbie?例如:
Abbie.setName("Putter");
if(cats.get(0).getName().equals(Abbie.getName()){
//Are their names the same?
}
答案 0 :(得分:1)
将对象传递给方法时,实际上是按值传递对此对象的引用。因此,当您更改对象的内容时,您通过引用引用它,因此引用相同引用的所有其他位置将看到更改。
BTW列表没有方法put()
,它有方法add()
答案 1 :(得分:1)
是的,引用指向使用new
创建的对象原始对象。因此,当您通过一个引用更改对象时,其他引用仍将指向同一个对象,因此当您通过它们访问对象属性时,它当然会返回相同的内容。
你可以自己试验并发现答案:)深度复制的功能当然不会表现出同样的行为!