我是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
}
}
答案 0 :(得分:8)
这是伟大的Java评估规则适用的另一个好例子。
Java从左到右解析地址。 a[i]
这是a[0]
的地址,然后是i的地址,然后将i分配给i,然后将9分配给a[0]
。
IndexOutOfBoundsException
永远不会被抛出,因为a[0]
没有超出范围。
误解为a[9]
,这违反了从左到右规则
答案 1 :(得分: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。