Почему замена целочисленной переменной на XOR не работает в одной строке?

Я хочу поменять значение двух целочисленных переменных в Java с помощью оператора XOR.

Это мой код:

int i = 24;
int j = 17;

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

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

Он будет работать нормально, но следующий эквивалентный код не работает:

int i = 24;
int j = 17;

i ^= j ^= i ^= j;

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

Вывод такой:

i : 0    j : 24

Первая переменная равна нулю! Что не так с Java?

Ответы на вопрос(3)

Ваш ответ на вопрос