黑马程序员技术交流社区
标题:
哪位给解释下原因
[打印本页]
作者:
从未有过的晴天
时间:
2014-6-20 20:56
标题:
哪位给解释下原因
本帖最后由 从未有过的晴天 于 2014-6-21 21:34 编辑
class ArgsDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a+"---"+b);
change(a,b);
System.out.println(a+"---"+b);
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]);
}
public static void change(int a,int b) {
System.out.println(a+"---"+b);
a = b;
b = a + b;
System.out.println(a+"---"+b);
}
public static void change(int[] arr) {
for(int x=0; x<arr.length; x++) {
if(arr[x]%2==0) {
arr[x]*=2;
}
}
}
}
作者:
小周务商
时间:
2014-6-20 21:30
你想表达什么呢?????????????????、
作者:
alive
时间:
2014-6-20 21:52
不要太水了大家都在水
作者:
郑飞
时间:
2014-6-20 22:01
要不要这样啊.....:o
作者:
从未有过的晴天
时间:
2014-6-21 21:35
结果知道,想知道为什么
作者:
Geek_001
时间:
2014-6-21 21:41
你发表是为了解决什么问题?
作者:
a6217815
时间:
2014-6-21 21:48
不知道 你想问什么,所以把结果的原因都弄出来了,不懂的再问好了
import java.util.*;
class ArgsDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a+"---"+b);//10---20
change(a,b);
System.out.println(a+"---"+b);
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]); //arr[1]=4
}
public static void change(int a,int b) {
System.out.println(a+"---"+b); //10---20
a = b; //b覆盖a ,a=20 b=20
b = a + b; //b=40
System.out.println(a+"---"+b); //20---40
}
public static void change(int[] arr) {
for(int x=0; x<arr.length; x++) {
if(arr[x]%2==0) {
arr[x]*=2; //arr[1] = arr[1] * 2 ,得到4
}
}
}
}
复制代码
作者:
小坏坏
时间:
2014-6-21 22:49
你是在问为什么一个函数可以交换,另一个可以不改变吗?
作者:
从未有过的晴天
时间:
2014-6-22 10:00
是啊,为什么前面没改变,后面却改变了
作者:
嗅ㄨiaǒ孑
时间:
2014-6-22 12:13
change是静态方法,作用于局部,a和b不是全局变量,没被改变
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2