Java ArrayIndexOutOfBoundsException

Java ArrayIndexOutOfBoundsException,java,Java,我在下面编写了一个Java程序: int[] tar = {1,2,5}; for(int i=0 ; i<tar.length ; i++) { if(tar[i] - tar[i-1] > 2) { System.out.print("true"); } } int[]tar={1,2,5}; 对于(int i=0;i 2) { 系统输出打印(“真”); } } 为什么“tar[i]-tar[i-1]”并不意味着任何错误?这不是ArrayInde

我在下面编写了一个Java程序:

int[] tar = {1,2,5};
for(int i=0 ; i<tar.length ; i++)
{
   if(tar[i] - tar[i-1] > 2)
   {
      System.out.print("true");
   }
}
int[]tar={1,2,5};
对于(int i=0;i 2)
{
系统输出打印(“真”);
}
}

为什么“tar[i]-tar[i-1]”并不意味着任何错误?这不是ArrayIndexOutBoundsException的错误吗?

这是一个
异常,而不是错误(如果您指的是编译器),因为Java只在运行时才知道数组值


编译器无法运行您的代码并看到这一点。如果在运行时您在正确的索引中提供了一些好的值呢?这就是为什么编译器只检查编译器级别的规则。它不会提示您运行时的行为。

您是否得到任何输出?请解释“并不意味着任何错误”。你是说编译错误?你认为会有编译错误吗?只有在运行程序时才会出现错误。@GhostCat您确定那个复制吗?这个问题是“为什么这个程序不产生预期的错误”。问题是:编译器不理解
i-1
导致无效索引(尽管在某些情况下可以理解这一点)。因此,在编译时没有检查。但运行时出现错误。。。你在问题标题中的那个。这就是一切。