试图记住疯狂的java数组技巧

试图记住疯狂的java数组技巧,java,arrays,Java,Arrays,我试着回忆我在一次认证考试中遇到的一些疯狂的java数组骗局。这是几年前的事了,我对细节有点模糊 事情是这样的: int[] a = {4,2,1} int i = a[ a[0] = 0 ] 这当然完全是胡说八道,但问题试图说明数组在被访问时保存了它的状态。因此,如果我真的得到了正确的结果,我希望'I'仍然等于4,但正如运行'I'得到新值0时所示 该认证是针对Java6的,我检查过这仍然是我在这里运行的(准确地说是1.6.0_51)。是以某种方式改变了还是我的记忆完全消失了 谢谢你让我沉迷于

我试着回忆我在一次认证考试中遇到的一些疯狂的java数组骗局。这是几年前的事了,我对细节有点模糊

事情是这样的:

int[] a = {4,2,1}
int i = a[ a[0] = 0 ]
这当然完全是胡说八道,但问题试图说明数组在被访问时保存了它的状态。因此,如果我真的得到了正确的结果,我希望'I'仍然等于4,但正如运行'I'得到新值0时所示

该认证是针对Java6的,我检查过这仍然是我在这里运行的(准确地说是1.6.0_51)。是以某种方式改变了还是我的记忆完全消失了

谢谢你让我沉迷于这个实际上毫无意义的问题:)

编辑:我永远不会建议在真实代码中使用或使用这种奇怪的东西

int i = a[ a[0] = 0 ]
等于-

a[0] = 0 // this assignment change the index 0 value to 0 - {0,2,1}
int i = a[ 0 ] // this 0 comes from assignment operation which is assigned value.
结果是0

等于-

a[0] = 0 // this assignment change the index 0 value to 0 - {0,2,1}
int i = a[ 0 ] // this 0 comes from assignment operation which is assigned value.

那么结果是0。

那么官方文档呢?


15.13.1阅读它=)

关于官方文件呢?


15.13.1阅读它=)

不要做奇怪的事,你将没有朋友。哦,该死,我只是好奇:/不要做奇怪的事,你将没有朋友。哦,该死,我只是好奇:/最后一行中的
0
是对上一条语句求值的结果(赋值返回赋值).我确实知道这是一种更合适的做事方式:)并且我尝试充实这件事,这样就可以清楚地看出奇怪是故意的。最后一行中的
0
是对前面语句求值的结果(赋值返回赋值).我知道这是一种更合适的做事方式:)我试着充实这件事,这样就可以明显地看出这种奇怪的感觉是有意的。谢谢,这正是我想要的:)谢谢,这正是我想要的:)