采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这里的counter不是引用类型(Integer)么,自增后,为啥最后打印出counter的值还是0呢。
是。
但是,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 是引用传递。
继续加油:)
非常感谢!终于彻底明白了,原来是测不出Integer引用传递的。
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
10.4k 16
1.4k 17
1.3k 14