请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师 ,counter是引用传递的么

这里的counter不是引用类型(Integer)么,自增后,为啥最后打印出counter的值还是0呢。图片描述

正在回答

1回答

是。


但是,increase 函数中 counter = counter + 1 这句话里,本质是将 counter 的指向改变,而不是改变 counter 的内容。所以你测试引用传递的方式是错误的。


你的测试方式等价于:

void main(){
    Student student = new Student("厥~~~");
    change(student);
}

void change(Student a){
    a = new Student("liuyubobobo");
}

运行完 change,main函数中的 student 不会变的。因为 a 和 student 是两个引用。


你要测试 Student 是引用传递,要这样测:

void change(Student a){    
    a.name = "liuyubobobo";
}


同理,main 函数中的 counter 和increase 函数中 counter, 是两个引用。调用 increase 的时候,这两个 counter 指向同一个内存。但是在运行完 counter = counter + 1 以后,increase 函数里的 counter 指向了新的内存。


但是,由于 Java 中的 Integer 类是不可更改的,所以你无法用这种方式测出 Integer 是引用传递。


继续加油:)

0 回复 有任何疑惑可以回复我~
  • 提问者 厥~~~ #1
    非常感谢!终于彻底明白了,原来是测不出Integer引用传递的。
    回复 有任何疑惑可以回复我~ 2019-10-16 10:52:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信