Avatar ·

Why does array[idx++] += "a" increment idx once in Java 8 and twice in Java 9+?

Hi everyone! I encountered a strange behavior in Java when using compound assignment operator with postfix increment on an array. I have a simple 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 this code outputs: ``` idx = 1 array[0] = xa array[1] = y ``` That is, idx is incremented once, and the string "a" is appended to array[0]. But in Java 9 and 10 I get: ``` idx = 2 array[0] = x array[1] = ya ``` That is, idx is incremented twice, and "a" is appended to array[1].