数组交换无效,而数组元素交换却有效,实在是弄不明白……
值传递的说法根本行不通啊
public class Test { public void changeArray(int[] a,int[] b){
int[] tmp = a;
a = b;
b = tmp;
}
public void changeElement(int[] a,int[] b){
int tmp = a[0];
a[0] = b[0];
b[0] = tmp;
} public static void main(String[] args) throws Exception {
int[] a = new int[1];
int[] b = new int[1];
Test t = new Test();
a[0] = 0;
b[0] = 1;
t.changeArray(a, b);
System.out.println(a[0]+" "+b[0]);
a[0] = 0;
b[0] = 1;
t.changeElement(a, b);
System.out.println(a[0]+" "+b[0]);
}
}
打印结果:0 1
1 0
值传递的说法根本行不通啊
public class Test { public void changeArray(int[] a,int[] b){
int[] tmp = a;
a = b;
b = tmp;
}
public void changeElement(int[] a,int[] b){
int tmp = a[0];
a[0] = b[0];
b[0] = tmp;
} public static void main(String[] args) throws Exception {
int[] a = new int[1];
int[] b = new int[1];
Test t = new Test();
a[0] = 0;
b[0] = 1;
t.changeArray(a, b);
System.out.println(a[0]+" "+b[0]);
a[0] = 0;
b[0] = 1;
t.changeElement(a, b);
System.out.println(a[0]+" "+b[0]);
}
}
打印结果:0 1
1 0
public void changeArray(int[] a,int[] b){
//传递了b的地址进来(局部变量)
int[] tmp = a;
a = b;
//对局部b重新赋值 也就是说 把a的地址给局部变量b (外面的b没影响 注意这点 只是对内部的重新赋值而已)
b = tmp;
}