java - 为什么下面的代码没有抛出IndexOutOfBoundsException,并打印出9 9 6?

标签 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]的地址,然后i就是i的地址,然后把9赋给i,再把9赋给 [0]

IndexOutOfBoundsException永远不会被抛出,因为a[0] 没有越界
误解是 a[9],它违反了left-to-right-rule

关于java - 为什么下面的代码没有抛出IndexOutOfBoundsException,并打印出9 9 6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6860357/

相关文章:

java - Jenkins 构建失败 - Android 应用程序

java - 迭代列表时出现问题 : IndexOutOfBoundsException in Java

java - 如何解决这个数组越界异常?

java - Heroku webapp-runner --enable-naming

java - 用java创建子类

java - 无法通过蓝牙写入十六进制字节

java - Java中的变量命名约定

JAVA(数组索引越界异常),Nutanix放置问题

java - 将单元格值添加到 JTable 时出现 ArrayIndexOutOfBoundException

java - 奇怪的 ArrayIndexOutOfBoundsException