Warum erhöht array[idx++] += "a" den idx in Java 8 einmal und in Java 9+ zweimal?
Hallo zusammen! Ich bin auf ein seltsames Verhalten von Java gestoßen, wenn ich den zusammengesetzten Zuweisungsoperator mit Postfix-Inkrement in einem Array verwende.
Ich habe diesen einfachen Code:
```java
public class Test {
public static void main(String[] args) {
String[] array = {"x", "y", "z"};
int idx = 0;
array[idx++] += "a";
System.out.println("idx = " + idx);
System.out.println("array[0] = " + array[0]);
System.out.println("array[1] = " + array[1]);
}
}
```
In Java 8 gibt dieser Code aus:
```
idx = 1
array[0] = xa
array[1] = y
```
Das heißt, idx wird einmal erhöht, und der String "a" wird an array[0] angehängt.
Aber in Java 9 und 10 erhalte ich:
```
idx = 2
array[0] = x
array[1] = ya
```
Das heißt, idx wird zweimal erhöht, und "a" wird an array[1] angehängt.