Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么下面的代码不抛出IndexOutOfBoundsException并打印出9 6?_Java_Indexoutofboundsexception - Fatal编程技术网

Java 为什么下面的代码不抛出IndexOutOfBoundsException并打印出9 6?

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

我是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]

将永远不会被抛出,因为[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这样的“棘手”代码从来都不是一个好主意;
相反,将其分解成不同的行-后代会感谢你。