我是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
}
}
我是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
}
}
这是另一个很好的例子,适用于伟大的 Java 评估规则。
Java 从左到右解析地址。a[i]
这是 的地址a[0]
,然后是 i 是 i 的地址,然后将 9 分配给 i,然后将 9 分配给a[0]
。
IndexOutOfBoundsException
永远不会被抛出,因为a[0]
没有越界。
误解是a[9]
,这违反了从左到右的规则
它不应该。
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。