需要帮助理解奇怪的数组语法

我在一本书中发现了这一点,我不知道它做了什么:

int index = 1; ... getArray() [index=2]++; 

[指数= 2] ++; 看起来很奇怪,但编译。 更奇怪的是,如果删除++ ,它就变为无效,即使据我所知, ++在这种情况下什么都不做(值总是2)。

那么,在这种情况下,后增量运算符的重点是什么(因为它不会增加值),为什么括号和为什么只有在最后添加post-inc时语句才合法?

有人可以解释这个神秘的语法是什么以及它的作用是什么?

让我们打破那段代码:

 getArray() [index=2]++; 

相当于:

 int[] someArray = getArray(); // Assume that's an int[] index = 2; someArray[index]++; 

最后一行相当于:

 someArray[index] = someArray[index] + 1; 

如果删除该++ ,则第二个表达式不是有效语句。 它变成了:

 getArray() [index]; 

您必须将其分配给某些L值。

当然它会无效,你没有做任何事情。

 getArray() [index=2]++; 

为了演示,我将使用myArray切换getArray() ,其中{ 100, 200, 300, 400 }
比它等于:

 myArray[2]++; 

myArray[2]现在输出:301
index将是:2

getArray()必须返回一个数字数组(比如说int ),所以getArray() [index=2]++; 解剖:

 int index = 2; int[] array = getArray(); array[index] = array[index] + 1;