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

时间:2014-03-05 19:39:37

标签: 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] ]

建筑意味着什么?

2 个答案:

答案 0 :(得分:4)

只需从左到右评估该表达式:

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

答案 1 :(得分:0)

b[ (b=a)[3] ]表示:

  1. 数组b在此作业a
  2. 中将具有相同的数组(b=a)
  3. 之后,(b=a)[3]表示返回b的4 th 索引为零(即数组b具有相同的a = {3, 2, 1, 0}值)
  4. b[(b=a)[3]]表示b[0]12