这种写法在C和C++能被正确运行,但在java中是肯定不行的,所以你只能分开写,a ^= b;b ^= a ;a^= b;
究其原因,java中操作符的操作数是从左向右求值的。
具体的,你看看java解惑这本书,对这个问题有讲解。
在C/C++中,可以尝试有符号和无符号,再看答案,也许就不一样了。
a ^= b;b ^= a ;a^= b;