Avatar ·

لماذا array[idx++] += "a" يزيد idx مرة واحدة في Java 8 ومرتين في Java 9+؟

مرحباً بالجميع! لقد واجهت سلوكاً غريباً في Java عند استخدام عامل الإسناد المركب مع الزيادة اللاحقة في مصفوفة. لدي كود بسيط: ```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]); } } ``` في Java 8، هذا الكود يطبع: ``` idx = 1 array[0] = xa array[1] = y ``` أي أن idx يزيد مرة واحدة، ويتم إضافة السلسلة "a" إلى array[0]. لكن في Java 9 و 10 أحصل على: ``` idx = 2 array[0] = x array[1] = ya ``` أي أن idx يزيد مرتين، ويتم إضافة "a" إلى array[1].