嵌套数组引用

Lor*_*can 11 java arrays

我目前正在在线学习Java,对以下代码以及数组中的元素之一要评估的内容感到困惑:

int[] a = new int[]{9, 8, 3, 1, 5, 4};

for (int i = 0; i < a.length; i++) {
    if (a[i] % 2 == 0) {
        a[i] += 1;
    } else if (a[i] < a.length) {
        a[i] += a[a[i]];
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在查看a[3]此代码的值,并且在调试代码时,我的IDE显示a[a[i]]正在评估到9,这让我有些困惑。

我以为先a[3]等于1a[1]等于8,但是事实并非如此。谁能提供清晰的信息,因为JetBrains学院的课程没有提到这一点。

Era*_*ran 10

请注意第一个条件-- if (a[i] % 2 == 0) {a[i] += 1;}这将导致偶数值递增。因此a[1]从递增89

现在,当i==3a[a[i]]被评估为a[1]等于9。然后将其添加到的原始值a[3](注意,运营商+=,而不是=),所以a[3]变成1 + 9,这是10