Dlaczego zamiana zmiennej całkowitej na XOR nie działa w jednej linii?

Chcę zamienić wartość dwóch zmiennych całkowitych w java za pomocą operatora XOR.

To jest mój kod:

int i = 24;
int j = 17;

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

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

Działa dobrze, ale następujący równoważny kod nie działa:

int i = 24;
int j = 17;

i ^= j ^= i ^= j;

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

Dane wyjściowe są następujące:

i : 0    j : 24

Pierwsza zmienna to zero! Co jest nie tak z Javą?