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

时间:2014-01-21 16:25:04

标签: java arrays

我在一本书中发现了这一点,但我得不到它的作用:

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

[index = 2] ++; 对我来说很奇怪,但编译。更奇怪的是,如果 ++ 被删除它会变得无效,即使据我所知, ++ 在这种情况下什么都不做(值总是2) 。

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

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

3 个答案:

答案 0 :(得分:10)

让我们打破这段代码:

getArray() [index=2]++;

相当于:

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

最后一行相当于:

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

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

getArray() [index];

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

答案 1 :(得分:0)

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

getArray() [index=2]++;

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

myArray[2]++;

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

答案 2 :(得分:0)

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

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