¿Por qué el intercambio de variables enteras por XOR no funciona en una sola línea?

Quiero intercambiar el valor de dos variables enteras en java usando el operador XOR.

Este es mi código:

int i = 24;
int j = 17;

i ^= j;
j ^= i;
i ^= j;

System.out.println("i : " + i + "\t j : " + j);

Funcionará bien, pero el siguiente código equivalente no funciona:

int i = 24;
int j = 17;

i ^= j ^= i ^= j;

System.out.println("i : " + i + "\t j : " + j);

La salida es así:

i : 0    j : 24

¡La primera variable es cero! ¿Qué pasa con Java?

Respuestas a la pregunta(4)

Su respuesta a la pregunta