在测试中我遇到了以下问题:
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/