0

我试图记住我在认证考试中遇到的一些疯狂的 Java 数组技巧。这是几年前的事了,我对细节有点模糊。

它是这样的:

int[] a = {4,2,1}
int i = a[ a[0] = 0 ]

这当然是胡说八道,但问题试图表明一个数组在访问时会保存它的状态。因此,如果我真的做对了,我希望 'i' 仍然等于 4,但是当运行 'i' 得到新值 0 时,如图所示。

该认证适用于 java 6,我检查了这仍然是我在这里运行的内容(准确地说是 1.6.0_51)。它是否以某种方式发生了变化,还是我的记忆完全消失了?

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

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

4

2 回答 2

3
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。

于 2013-10-03T10:30:07.213 回答
3

官方文档呢? http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.13.1

15.13.1 阅读它 =)

于 2013-10-03T10:35:14.507 回答