17

Java、Kotlin 和 Android 如何处理在给定索引处返回 Array 值,同时递增索引值?

int[] someArray = new int[5];
int index = 0;
int result;

result = someArray[index++];

哪个索引将传递给结果?它会先递增index,然后someArray[1]将其传递给 ,还是将原始值传递给indextosomeArray[0]然后递增index

4

5 回答 5

19

请参阅:Java 文档、赋值、算术和一元运算符

代码结果++;和++结果;都将导致结果加一。唯一的区别是前缀版本 (++result) 计算为增量值,而后缀版本 (result++) 计算为原始值。

所以你会得到someArray[0].

于 2011-08-28T00:29:11.483 回答
5

index++返回index,然后递增 1。所以它会这样做result = someArray[0],然后设置index为 1。

相反,++index将执行增量,然后传递增量值。因此,如果您想在上面的代码中result设置为,您可以使用.someArray[1]++index

正如其他人所说,请不要使用这种语法。相反,请写

index++;
result = someArray[index];
于 2011-08-28T00:31:09.257 回答
4

在 Java 和类似语言中,index++仅在计算表达式后才使用递增值。如果要在使用变量之前递增,请使用++index.

在这种情况下,它将使用 的原始值index来获取result,然后将其值增加到 1。

于 2011-08-28T00:27:22.457 回答
3

它会通过someArray[0]然后递增index

它不依赖于android,一般规则是:

index++ 表示先计算索引然后递增它,而 ++index 是先递增然后再计算

于 2011-08-28T00:27:13.980 回答
1

1.) 避免做这种事情,事实上,在我审查的代码中,我要求人们永远不要这样做。

不是专门使用 ++,而是您将其作为评估其他内容的一部分。通常,编译器不会花费任何额外的费用来将该增量作为单独的语句,并且像这样将其内联意味着下一个出现的人必须花一秒钟并自己评估增量。

我知道这是次要的,而且有点挑剔,但是像这样的东西在代码审查期间会花费额外的时间,在扫描时很容易错过等等。而且它只会为您节省一些额外的击键,与代码清晰度和可读性相比不值得 IMO。

2) 你会得到 someArray[0],在移动到下一行之后,你的索引会增加。

于 2011-08-28T00:29:40.157 回答