根据JLS,对数组访问表达式的运行时评估的行为如下:
因此,此代码将打印:java.lang.NullPointerException,index = 2
class Test3 {
public static void main(String[] args) {
int index = 1;
try {
nada()[index = 2]++;
} catch (Exception e) {
System.out.println(e + ", index=" + index);
}
}
static int[] nada() {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:出于什么原因,我们需要首先对index = 2表达式求值,而不是在数组引用被评估为null时立即抛出NullPointerException?或者换句话说-为什么1,2,3而不是1,3,2?