我有这样的练习:
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]++;
编译没有错误吗?
发布于 2019-06-27 01:57:07
让我们一步一步来:
这个方法应该返回一个int的数组,然后在索引2处访问数组,访问的结果(一个int值)可以递增,是的,你可以分配一个变量,并在同一语句中使用它作为数组索引,(whateverArray[2]++
)
因此,这都是合法的语法。当然,在运行时,您最终会得到一个空指针异常。
编译器可以知道该方法返回null,但是标准javac并不关心这些细微的细节(对于方法结果)。任何像样的IDE都会立即告诉您,这段代码在执行时会崩溃。
https://stackoverflow.com/questions/56778551
复制相似问题