" ^ "——异或运算,二元操作运算符,对两个操作元的每个二进制位进行异或运算,运算规则为:
1^1=0,1^0=1,0^1=1,0^0=0;0^n=n,n^n=0。即相同为0,不同为1,但是这样很容易混淆,可以把异或运算记为无进位相加,如0和1异或就是1,1和1异或就会进位,要忽略,就是0。
那么如何不用临时变量去交换两个数的值呢,那么就可以利用0和任何数异或都为这个数本身,任何数和本身异或都为0,这个性质来交换两个数的值,举个例子:
public static void main(String[] args) {
// 定义a,b两个变量
int a = 10;
int b = 20;
System.out.println("a的初始值为:" + a);
System.out.println("b的初始值为:" + b);
// 两个相同的数异或等于0,任何数与0异或都等于本身
// 异或运算满足交换律和结合律
a = a ^ b; // 此时b不变,a=a^b,b=b
b = a ^ b; // 此时b=a^b^b,所以b=a
a = a ^ b; // 此时a=a^b^a,所以a=b
System.out.println("a交换后的值为:" + a);
System.out.println("b交换后的值为:" + b);
}
运行结果: