Когда в одном операторе происходит несколько назначений, эти назначения имеют право-ассоциативность.Это означает, что
a[0]=a[2]=a[1];
имеет то же значение, что и:
a[0]=(a[2]=a[1]);
JLS Раздел 15.26 детали :
Есть 12 операторы присваивания ;все синтаксически справа ассоциативны (они группируются справа налево).Таким образом, a=b=c
означает a=(b=c)
, который назначает значение c
для b
, а затем присваивает значение b
для a
.
Во время выполнения результатВыражение присваивания - это значение переменной после присвоения.
Итак, конечным результатом одного присваивания является присвоенное значение.Это означает, что:
- Значение
a[1]
присваивается a[2]
, что составляет 1
.Это значение выражения a[2]=a[1]
. - Значение из шага (1),
1
, присваивается a[0]
.
Если вы хотите значениес a[2]
для присвоения a[0]
перед копированием значения с a[1]
на a[2]
, затем вы должны разбить их на отдельные операторы.
a[0]=a[2];
a[2]=a[1];