如果我更新一个对象,它会在任何地方更新吗?

时间:2014-05-26 14:24:33

标签: java

如果我在代码中更新一个对象,它是否会在任何地方更新它,还是我必须刷新它?

例如:

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?
}

2 个答案:

答案 0 :(得分:1)

将对象传递给方法时,实际上是按值传递对此对象的引用。因此,当您更改对象的内容时,您通过引用引用它,因此引用相同引用的所有其他位置将看到更改。

BTW列表没有方法put(),它有方法add()

答案 1 :(得分:1)

是的,引用指向使用new创建的对象原始对象。因此,当您通过一个引用更改对象时,其他引用仍将指向同一个对象,因此当您通过它们访问对象属性时,它当然会返回相同的内容。

你可以自己试验并发现答案:)深度复制的功能当然不会表现出同样的行为!