使用下面的代码,我在运行时得到一个NullPointerException。为什么我不在这里得到编译错误?
public class NullPointerExceptionDemo {
int x = 12;
static NullPointerExceptionDemo reset(NullPointerExceptionDemo obj) {
obj = null;
return obj;
}
public static void main(String[] args) {
NullPointerExceptionDemo o1 = new NullPointerExceptionDemo();
o1 = reset(o1);
System.out.print(o1.x);
}
}
答案 0 :(得分:3)
这不会导致编译错误。它将从o1.x
开始在运行时抛出NPE,因为o1
为空。代码中没有问题抛出编译错误。
答案 1 :(得分:0)
没有编译错误。它会抛出RunTimeException。因为o1是null
。
答案 2 :(得分:0)
你设置了null obj = null;通过调用reset方法然后打印对象,使其抛出NullPointerException
答案 3 :(得分:0)
它只是代码的输出:
Exception in thread "main" java.lang.NullPointerException
at com.test.pack.NullPointerExceptionDemo.main(NullPointerExceptionDemo.java:13)
如果你得到如上所述的输出。这不是一个例外。
答案 4 :(得分:0)
编译错误是一种状态,当编译器无法编译源代码时,这意味着该代码包含例如一些语法错误。从语法的角度来看,您的代码是正确的。所以,这就是原因。在程序运行期间会抛出NPE,因为o1
是null
。