Warum array[idx++] += "a" in Java 8 idx einmal und in Java 9+ zweimal erhöht?
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 zu array[0] hinzugefügt.
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 zu array[1] hinzugefügt!
Ich verstehe, dass dies mit Änderungen im javac-Compiler zwischen den Versionen zusammenhängt. Aber warum passiert das? Ist das ein Bug oder ein Feature? Wie schreibt man solchen Code richtig, damit er überall gleich funktioniert?
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen