Avatar ·

Por que array[idx++] += "a" incrementa idx uma vez no Java 8 e duas vezes no Java 9+?

Olá a todos! Encontrei um comportamento estranho do Java ao usar o operador de atribuição composta com incremento pós-fixado em um array. Eu tenho um código simples: ```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]); } } ``` No Java 8, este código imprime: ``` idx = 1 array[0] = xa array[1] = y ``` Ou seja, idx é incrementado uma vez, e a string "a" é adicionada a array[0]. Mas no Java 9 e 10, eu obtenho: ``` idx = 2 array[0] = x array[1] = ya ``` Ou seja, idx é incrementado duas vezes, e "a" é adicionado a array[1].