老师 ,counter是引用传递的么
来源:2-6 使用泛型
厥~~~
2019-10-16
这里的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 是引用传递。
继续加油:)
012019-10-16
相似问题
关于引用传递的问题
回答 2
为什么我思考的递归总和老师的不一样...
回答 1