请查看下面的代码段,让我知道如何以1 2的形式出现。
int[] a = { 1, 2, 3, 4 };
int[] b = { 2, 3, 1, 0 };
System.out.println( a [ (a = b)[3] ] );
System.out.println(a[0]);
实际答案1 2
由于
答案 0 :(得分:7)
说真的,这是什么目的?你为什么要做一些使代码难以理解的事情。你期望结果是什么?
System.out.println( a [ (a = b)[3] ] );
的结果与将事物推送到评估堆栈的顺序有关...例如
所以它将元素打印在原始a
数组
System.out.println(a[0]);
只是b[0]
答案 1 :(得分:6)
我会试着解释一下:
a [ (a = b)[3] ]
将按以下顺序执行:
a [...]
- 将读取数组a
并为其存储引用(a = b)
- 变量a
设置为引用数组b
(a=b)[3]
- 读取数组b
的第4个元素(因为步骤2),值为0
a [ (a = b)[3] ]
- 现在等于a[0]
(由于步骤1和3),值为1
a[0]
现在产生2
,因为a
引用了数组b
(因为第2步),并且该数组中的第一个元素是2
。
答案 2 :(得分:0)
前两行初始化您的数组。第一个sysout将b分配给a然后打印[3],即。你的a现在有值{2,3,1,0}。第二个sysout打印一个[0]。