public void reverse(char[] chars, int left, int right) { while (left < right) { chars[left] ^= chars[right]; chars[right] ^= chars[left]; chars[left] ^= chars[right]; left++; right--; } }
假设 a二进制为01110101
b二进制为00100111
a ^= b --> a = 10101101
b ^= a --> b = 01110101 b这时已经等于原来的a了。
a ^= b --> a = 00100111 a这时已经等于原来的b了。
整体来看 char = a ^ b ^ a = a ^ a ^ b = b;