黑马程序员技术交流社区
标题:
求教一个关于基本参数和引用参数作为形式参数的问题
[打印本页]
作者:
冷锋也温柔
时间:
2014-8-12 23:11
标题:
求教一个关于基本参数和引用参数作为形式参数的问题
这是一道编程题
public class ArgsDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
change(a, b);
System.out.println(a + "---" + b); //
10---20这里输出的是10和20 为什么值不发生变化呢 谁能从原理上解释
int[] arr = { 1, 2, 3, 4, 5 };
change(arr);
for (int x = 0; x < arr.length; x++) {
System.out.println(arr[x]);// 2,4,6,8,10
}
String s1 = "hello";
String s2 = "world";
change(s1, s2);
System.out.println(s1 + "---" + s2);// hello---world
}
public static void change(String s1, String s2) {
s1 = "haha";
s2 = "hehe";
}
public static void change(int[] arr) {
for (int x = 0; x < arr.length; x++) {
arr[x] *= 2;
}
}
public static void change(int a, int b) {
a = b;
b = a + b;
}
}
作者:
亨利大帝
时间:
2014-8-13 00:24
如果传递的是基本类型:形式参数的改变不影响实际参数
如果传递的是引用类型:形式参数的改变影响实际参数
你要问的地方传递的是基本类型,所以change()方法里如何变化都不影响实际参数a b的值所以没变,你可可以画图理解。首先main方法进栈 a = 10. b=20, 然后调用change()方法,将a b的值作为传递过去,结果就是change()方法里的a = 20, b=40.但是现在输出的是main方法的a b 所以还是原值
作者:
舍我其谁
时间:
2014-8-13 01:16
楼上讲的很深入了
作者:
冷锋也温柔
时间:
2014-8-14 00:12
非常感谢 明白了啊
作者:
嘿~~
时间:
2014-8-14 11:28
change(int a, int b) 和change(String s1, String s2)两个方法内各加一条打印语句看一下结果变化了没,当这两个方法结束后,参数依然指向自己原来的值,
change(int[] arr)保存的是引用,你改变了他们的值,他们的引用指向这些被改变了的值,所以打印结果变化了
作者:
冷锋也温柔
时间:
2014-8-14 23:45
恩恩 是的 看出差别了 谢谢啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2