首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么传递对象在新关键字行之后不会被更改?

为什么传递对象在新关键字行之后不会被更改?
EN

Stack Overflow用户
提问于 2019-03-25 23:32:45
回答 1查看 0关注 0票数 0

为什么一开始我对“o”对象所做的更改反映在main中的对象上但是在用新关键字赋值后,即使在方法中也没有任何变化?

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

发布于 2019-03-26 08:50:42

您创建一个新对象,将其分配给该对象,o然后在该方法内部对该新创建的对象进行更改,但是在该change方法之外,该引用保持不变,因此您可以看到旧对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档