为什么一开始我对“o”对象所做的更改反映在main中的对象上但是在用新关键字赋值后,即使在方法中也没有任何变化?
public class Main {
public static void main(String[] args) {
ObjectPassDemo ob1 = new ObjectPassDemo(100, 22);
ObjectPassDemo ob2 = new ObjectPassDemo(100, 22);
ObjectPassDemo ob3 = new ObjectPassDemo(-1, -1);
ob2.change(ob2);
System.out.println("In Main " + ob2.a + "," + ob2.b);
} }
class ObjectPassDemo {
public int a, b;
public ObjectPassDemo(int a, int b) {
this.a = a;
this.b = b;
}
void change(ObjectPassDemo o) {
o.a=33;
o.b=43;
System.out.println("In method before constructor " + a + "," + b);
o=new ObjectPassDemo(1000,2000);
o.a=88;
o.b = 888;
System.out.println("In method after constructor " + a + "," + b);
}
发布于 2019-03-26 08:50:42
您创建一个新对象,将其分配给该对象,o
然后在该方法内部对该新创建的对象进行更改,但是在该change
方法之外,该引用保持不变,因此您可以看到旧对象。
https://stackoverflow.com/questions/-100006505
复制相似问题