لماذا 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].