为什么我这里没有得到编译器错误

时间:2014-04-03 10:20:54

标签: java

使用下面的代码,我在运行时得到一个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); 
    }
}

5 个答案:

答案 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,因为o1null