java - 将一维数组处理为 a[ (b=c) [index]]。这是什么意思?

标签 java arrays

在测试中我遇到了以下问题:

    int[] a = {3, 2, 1, 0};
    int[] b = {12, 13, 14, 15};

    System.out.println(b[(b=a)[3]]); // ?
    System.out.println(b[3]); // ?

输出:

12
0

谁能解释一下这个结果?

b[ (b=a) [3] ]

构造方法是什么?

最佳答案

只需从左到右计算该表达式:

b[ (b=a) [3] ]
  • 首先是访问数组 b 中的索引。
  • 访问哪个索引由[]中的表达式决定:

    • [(b=a)[3]]
  • 计算里面的表达式:

    • 第一个 b 引用被赋予 a 引用的值。因此,现在 b 引用了 a 引用的数组。该表达式实际上等效于:
      • b = a,后跟 [b[3]]

所以,原来的表达式变成:

b[a[3]] // == b[0] // == 12

现在,在第一个表达式之后,由于 b 引用已更改为指向 a 数组,因此第二个表达式:b[3] ,等同于:a[3],即0

关于java - 将一维数组处理为 a[ (b=c) [index]]。这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207548/

相关文章:

java - 识别触发 onTap 调用的 GeoPoint

java - 如何使用 jdom 和 java 将数据附加到 xml 文件

C# - 更改函数内的数组值

c++ - 将一个数字提高到一个巨大的指数

java - 如何通过单击超链接来运行 jar 文件 (Firefox)

java - 在java中提取私钥

java - Hibernate 无法运行此 hql 查询

javascript - 在 Javascript 中过滤数组以查找 3 个连续的数字

c++ - 将二维上三角和下三角中的元素映射到线性结构

arrays - 查找数组中的重复数字vba