
运行结果:
i = 1;
str = "hello";
num = 2;
arr = {2,2,3,4,5};
my.a = 11;
解析:
要点1、基本数据类型是值传递,形参j在方法栈中使用完就没了,所以不会影响I
要点2、包装类、引用类型是地址值传递
要点3、字符串和包装类是不可变的
所以我们通过要点1能够知道,i是值传递不会影响i,要点2指出str、num、arr、my都是地址值转递,会影响堆中的值,但是要点3指出字符串和包装类是不可变的,内存里面会重新创建一个新的地址,形参s、n都是指向新的地址,实参str、num指向原本的地址,所以str、num不会发生改变,实参arr、my随着指向的地址中的值发生改变而改变。
这里是引用
https://www.bilibili.com/video/BV1Eb411P7bP?p=4
本文深入探讨了编程中的值传递和引用传递概念。重点解析了基本数据类型、字符串、对象数组以及自定义对象在参数传递中的行为。强调了字符串和包装类的不可变性,以及如何影响方法调用后的变量状态。同时,文章通过实例解释了地址值传递如何导致堆中值的变化,并分析了不同数据类型的内存影响。
311

被折叠的 条评论
为什么被折叠?



