Por que trocar a variável inteira pelo XOR não funciona em uma única linha?

Eu quero trocar o valor de duas variáveis ​​inteiras em java usando o operador XOR.

Este é o meu código:

int i = 24;
int j = 17;

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

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

Ele funcionará bem, mas o seguinte código equivalente não funciona:

int i = 24;
int j = 17;

i ^= j ^= i ^= j;

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

Saída é assim:

i : 0    j : 24

A primeira variável é zero! O que há de errado com o Java?

questionAnswers(5)

yourAnswerToTheQuestion