在java中只有值传递,按值传递,形参的改变对实参没有影响,即实参不变。
public class Demo4_2_1 {
public static void main(String[] args) {
int []arr={2,12,1,15,185,25,1985,125,1555};
int a=2;
int b=3;
swap(a,b);
swap(arr,0,1);
}
private static void swap(int []arr,int x,int y) {
arr[x]=arr[x]+arr[y];
arr[y]=arr[x]-arr[y];
arr[x]=arr[x]-arr[y];
}
private static void swap(int x,int y) {
x=x+y;
y=x-y;
x=x-y;
}
}
swap(a,b)调用后,x,y的值改变了,但a,b的值没变。
swap(arr,0,1)调用后,arr[0],arr[1]的值交换了。
java中基本类型无法实现值交换的方法。
下面介绍几种交换值的方法:
①a=a+b;
b=a-b;
a=a-b; 注意:这样需要考率a+b溢出的问题。
②x=x^y;
y=x^y;
x=x^y;