异或操作符:^ 有一条性质:x^y^x=y;根据这条性质,我们可以改变交换一下两个数的值。
x=x^y;
y=y^x;
x=y^x;
这样x,y其不是交换了哈哈。下面的小程序演示了一下这个交换问题哈哈。
public class CleverSwap{
public static void main(String[ ] args){
int x = 1984;
int y= 2001;
x ^ = y ^ = x ^ = y // (1)
System.out.println("x"+"="+x+"y"+"="+y);
}
}
上面的小程序的结果是x=0,y=1984;结果不是预期的,哎。我郁闷。。。。这说明在JAVA中这种方法不行。。因为JAVA中在计算x^=y时,是先提取出了x的值。
JAVA中为了实现上面的表达式(1),是这样实现的:
int temp1 = x;
int temp2=y;
int temp3=x^y
int x=temp3;
int y=temp2*temp3;
int x=temp1^y;
呵呵,现在终于知道结果为什么是这样了哈哈。