首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Java对象实例化为传递的对象引用

将Java对象实例化为传递的对象引用
EN

Stack Overflow用户
提问于 2019-08-30 16:58:47
回答 1查看 21关注 0票数 1

这是我用来理解java如何处理对象内存的测试代码。

代码语言:javascript
复制
public class TestCode {

  public static void main(String[] args) {
    TestCode obj = new TestCode();

    CustomClass cs1 = new CustomClass(5);
    obj.updateExistingObj(cs1);
    System.out.println(cs1.val);

    CustomClass cs2 = new CustomClass(5);
    obj.instantiateExistingObj(cs2);
    System.out.println(cs2.val);

    CustomClass cs3 = null;
    obj.updateNullObj(cs3);
    System.out.println(cs3.val);
  }

  void updateExistingObj(CustomClass cs1) {
    cs1.val = 9;
  }

  void instantiateExistingObj(CustomClass cs2) {
    cs2 = new CustomClass(9);
  }

  void updateNullObj(CustomClass cs3) {
    cs3 = new CustomClass(9);
  }
}

class CustomClass {
  int val;
  CustomClass next;
  CustomClass(int x) { val = x; }
}

在打印cs1.val的第一个系统的输出中,我得到的期望值是9。

在我打印cs2.val的第二个syso的输出中,我得到了5作为输出,而不是9。

第三个系统的输出,在我打印cs3.val的地方,我得到了一个null pointer exception

有没有人能帮我了解一下这里到底发生了什么?当我们将一个对象作为函数参数传递时,java到底是如何处理内存位置的呢?谢谢你的帮助!!

EN

回答 1

Stack Overflow用户

发布于 2019-08-30 17:05:32

cs2cs3是局部变量,为它们赋值对声明它们的方法之外没有任何影响。

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

https://stackoverflow.com/questions/57723613

复制
相关文章

相似问题

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