这是 Java 代码片段。
class Test{
public static void main(String[ ] args){
int[] a = { 1, 2, 3, 4 };
int[] b = { 2, 3, 1, 0 };
System.out.println( a [ (a = b)[3] ] );
}
}
为什么打印1?这不是作业!我正在尝试理解Java。这与 OCA Java 7 考试有关。
最佳答案
当您引用a[ ... ]
时,a
仍然指向第一个数组。当计算索引本身时,会将 b
分配给 a
。所以此时,a
变成了 b
,其中取出了第 3 项,即 0
。
这个0
用作之前已经找到的数组的索引。这是 a
指向的数组,尽管 a
本身同时也发生了变化。因此,即使您可能期望 2
,它也会打印 1
。
我认为这就是这个示例想要展示的内容:数组引用已经被评估,并且一旦在索引评估期间修改数组变量就不会改变。
但我不会在生产代码中使用这个“功能”。非常不清楚。
关于java - 访问数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13323726/