java - 访问数组中的元素

标签 java arrays

这是 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/

相关文章:

javascript 删除 json 包含字符串而不是 equals 的地方

java - Maven 没有将测试资源部署到嵌入式服务器

java - Java中从snake_case到camelCase

java - 有没有办法让 javadoc 工具记录注释?

c++ - 创建大量数字(10^9 大小)

ios - 访问特定索引中的数组

java - 如何从其他函数写入JTextArea?

Java-反向打印双向链表

在 OpenGL ES 2.0 中将字节数组转换为图像

Javascript 将数组排序为树