¿Por qué array[idx++] += "a" incrementa idx una vez en Java 8 y dos veces en Java 9+?
¡Hola a todos! Me encontré con un comportamiento extraño de Java al usar el operador de asignación compuesta con incremento postfijo en un array.
Tengo un código simple:
```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]);
}
}
```
En Java 8 este código imprime:
```
idx = 1
array[0] = xa
array[1] = y
```
Es decir, idx se incrementa una vez, y la cadena "a" se agrega a array[0].
Pero en Java 9 y 10 obtengo:
```
idx = 2
array[0] = x
array[1] = ya
```
¡Es decir, idx se incrementa dos veces, y "a" se agrega a array[1]!
Entiendo que esto está relacionado con cambios en el compilador javac entre versiones. Pero ¿por qué sucede esto? ¿Es un bug o una feature? ¿Cómo escribir correctamente este código para que funcione igual en todas?