创建一个测试类,在这个类的主方法中创建扫描器对象接受用户输入两个变量值,然后通过位运算的异或运算符”^“实现两个变量的互换,代码如下
package www.csdn.net.fuxi;
import java.util.Scanner;
public class Testcopy {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);// 创建扫描器
System.out.println("a:");
long A = scan.nextLong();// 接收第一个变量
System.out.println("b:");
long B = scan.nextLong();// 接收第二个变量值
System.out.println("a=" + A + "\tb=" + B);
System.out.println("互换后:");
A = A ^ B;// 执行变量互换
B = B ^ A;
A = A ^ B;
System.out.println("a=" + A + "\tb=" + B);
}
}
参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0
例如:10100001^00010001=10110000
0^0=0,0^1=1 0异或任何数=任何数
1^0=1,1^1=0 1异或任何数-任何数取反
任何数异或自己=把自己置0
上面的代码可以理解为把数值变量转换为2进制即:
a=4,b=5
a=a^b //00000100^00000101=00000001现在a=00000001
b=b^a //00000101^00000001=00000100现在b=00000100
a=a^b //00000001^00000100=00000101现在a=00000101
经过上边的步骤就完成了两个整型变量的互换了。