这句话啥意思?
                   int x = 2010; 
int y = 2012; 
x^=y^=x^=y;
System.out.println("x= " + x + "; y= " + y);
就是x^=y^=x^=y;这句话,谢谢!

解决方案 »

  1.   

    ^ 按位异或(XOR) c   =   a   ^   b   
    a^=b  与 a+=b 用法一样
      

  2.   

    x = 2010 (11111011010)
    y = 2012 (11111011100)X^=y^=x^=Y  等价于 X^=(y^=(x^=Y))最后的x^=y 等价于 a = x = x^y = 11111011010 ^ 11111011100 = 00000000110
    y^=(x^=y) 等价于 b = y = y^a = 11111011100 ^ 00000000110 = 11111011010 (2010)
    x^=(y^=(x^=Y)) 等价于 c = x^b = 11111011010 ^ 11111011010 = 00000000000 (0)
      

  3.   

    ^ 是按位异或,a^=b 同a+=b的运算规则是一样的,相当于a=a^b,所以LZ的程序x的最终值实际为x=x^(y^(x^y)),y=y^(x^y)
      

  4.   

    int是32位 真实的x应该是 00000000000000000000011111011010(前面应该要加21个零的)
      

  5.   

    int a= 10 ;
    int b = 5;
    a+=b+=a+=b;
    System.out.println(a + "  " + b);
      

  6.   

    x^=y^=x^=y;最好不要这么做,理由见 Java Puzzlers要显摆的话最好写成这样:x ^= y;
    y ^= x;
    x ^= y;
      

  7.   

    这是JAVA解惑里的一节 里面做了详细的说明了 LZ可以去CSDN资源里找
      

  8.   

    ^ 按位异或(XOR) c = a ^ b   
    a^=b 与 a+=b 用法一样     x = 2010 (11111011010)
    y = 2012 (11111011100)X^=y^=x^=Y 等价于 X^=(y^=(x^=Y))最后的x^=y 等价于 a = x = x^y = 11111011010 ^ 11111011100 = 00000000110
    y^=(x^=y) 等价于 b = y = y^a = 11111011100 ^ 00000000110 = 11111011010 (2010)
    x^=(y^=(x^=Y)) 等价于 c = x^b = 11111011010 ^ 11111011010 = 00000000000 (0)
    x^=y^=x^=y;最好不要这么做,理由见 Java Puzzlers要显摆的话最好写成这样:x ^= y;
    y ^= x;
    x ^= y;
      

  9.   

    严重的 倒分   http://topic.csdn.net/u/20110225/09/f7efb071-fadd-4e9b-8cf0-93e4e27c64d4.html?seed=1954752191&r=71804231#r_71804231