Java 为什么下面的代码不抛出IndexOutOfBoundsException并打印出9 6?
我是java新手。我有点怀疑Java 为什么下面的代码不抛出IndexOutOfBoundsException并打印出9 6?,java,indexoutofboundsexception,Java,Indexoutofboundsexception,我是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
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]
将永远不会被抛出,因为[0]未超出范围。误解是[9],这违反了从左到右的规则 a[i]=i=9(使i等于9) [0]也应该是9,因为您为它分配了9(a[i]=i=9),最初[0]是3 a[1]是6(初始值(int[]a={3,6};) 你应该得到9.6分
如果你做[2],那么它会给你一个IndexOutOfBoundsException。请注意,明确地说,由于你(可能还有其他人)正在经历的困惑,尝试像
a[i]=i=9这样的“棘手”代码从来都不是一个好主意;
相反,将其分解成不同的行-后代会感谢你。