7

我是java新手。我有一个疑问。

class ArrTest{ 
  public static void main(String args[])
{ 
    int   i = 0; 
    int[] a = {3,6}; 
    a[i] = i = 9; 
    System.out.println(i + " " + a[0] + " " + a[1]); // 9 9 6
  } 
} 
4

2 回答 2

8

这是另一个很好的例子,适用于伟大的 Java 评估规则。

Java 从左到右解析地址。a[i]这是 的地址a[0],然后是 i 是 i 的地址,然后将 9 分配给 i,然后将 9 分配给a[0]

IndexOutOfBoundsException永远不会被抛出,因为a[0]没有越界
误解是a[9],这违反了从左到右的规则

于 2011-07-28T14:12:33.723 回答
0

它不应该。

a[i] = i = 9(使 i 等于 9)a[0] 也应该是 9,因为您将 9 分配给它(a[i] = i = 9),最初 a[0] 是 3 而 a[ 1] 为 6(初始值 (int[] a = {3, 6};)

你应该得到 9 9 6。

如果您执行 [2],那么它会给您一个 IndexOutOfBoundsException。

于 2011-07-28T14:18:42.270 回答