我有这个练习:
public class Test2 {
public static void main (String [] args){
int index=1;
getArray()[index=2]++; //why???
}
public static int[] getArray() {
return null;
}
}
我认为,要调用静态方法getArray,必须编写:
getArray();
...没有索引!
我认为此代码存在编译器错误。
您能解释一下为什么getArray() [index =2]++;
编译时没有错误吗?
答案 0 :(得分:3)
让我们一步一步走
public static int[]
)数组whateverArray [index=2]
)处访问该数组whateverArray[2]++
)因此,这都是合法的语法。当然,在运行时,您最终会遇到nullpointer异常。
编译器可以知道该方法返回null,但是标准javac并不关心这些细微的细节(用于方法结果)。而且任何不错的IDE都会立即告诉您,该代码在执行时会中断。