试图记住疯狂的java数组技巧
我试着回忆我在一次认证考试中遇到的一些疯狂的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)。是以某种方式改变了还是我的记忆完全消失了 谢谢你让我沉迷于
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
是对前面语句求值的结果(赋值返回赋值).我知道这是一种更合适的做事方式:)我试着充实这件事,这样就可以明显地看出这种奇怪的感觉是有意的。谢谢,这正是我想要的:)谢谢,这正是我想要的:)