写个⽅法,传递两个⾮0的int数值进去,实现变量交换的⽅式,有⼏种⽅式?
简介:java数据类型划分
考点:java基础类型的划分和运算
⽅式⼀
public static void swap(int a, int b){
System.out.printf("a=%d, b=%d",a,b);
a = a + b;
b = a - b ;
a = a - b;
System.out.printf("\na=%d, b=%d",a,b);
}
⽅式⼆ 异或运算 (⼀个数与另⼀个数异或两次是其本身, ⼀个数和⾃身异或结果是0 )
public static void swap(int a, int b){
System.out.printf("a=%d, b=%d",a,b);
a = a + b;
b = a - b ;
a = a - b;
System.out.printf("\na=%d, b=%d",a,b);
}
public static void swap2(int a, int b){
System.out.printf("a=%d, b=%d",a,b);
a = a^b; // a1 = a^b
b = b^a; // b = b^a^b
a = a^b; // a = a1^b = a^b^a
System.out.printf("\na=%d, b=%d",a,b);
}
解释:
a1=a^b
b=b^a1=b^a^b=a
/