NullPointerException或将打印静态变量的内容

KNU*_*KNU 10 java static static-members nullpointerexception

我遇到了以下代码:

public class TradingSystem {

    private static String category = "electronic trading system";

    public static void main(String[] args) {
        TradingSystem system = null;
        System.out.println(system.category);
}
Run Code Online (Sandbox Code Playgroud)

输出:电子交易系统

我很惊讶没有找到NullPointerException!

Q1.它为什么不抛出NullPointerException

Q2.或者在编译时,由于类别的声明已经static使它替换系统(即对象引用),TradingSystem并且因此基本上TradingSystem.category被称为?

das*_*ght 7

Java允许static使用实例语法访问类变量(即1).换句话说,编译器允许您编写system.category,但它将其解析为TradingSystem.category,它独立于访问它的实例.

这就是你没有得到的原因NullPointerException.但是,这种语法不易读取和混淆.这就是为什么你应该得到一个警告和建议,TradingSystem.category而不是使用system.category.


归档时间:

查看次数:

554 次

最近记录:

10 年,12 月 前