java对基本类型的传递不支持引用传递
即
public static void main(String[] args){
int a = 1, b=2;
swap(a,b);
System.out.print("a="+ a + ", b="+ b);
}
void swap(int a, int b){
int temp = a;
a = b;
b = temp;
}
这样只是把实参的值赋值给了形参,再对形参进行改变,并不能改变实参。
可通过数组解决
public static void swap(int[] a,int i,int j){
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
swap(a,i,j);
这是网上找到的另一种方法
public static void main(String[] args){
AtomicInteger a = 1, b = 2;
swap(a,b);
System.out.print("a="+ a + ", b="+ b);
}
void swap(Integer a, Integer b){
int temp = a.get();
a.set(b.get());
b.set(temp);
}