jvm 为什么System.out.println()中的“out”静态字段即使在声明中被赋为null作为最终值也不抛出null异常?[duplicate]

g9icjywg  于 2022-11-07  发布在  其他
关注(0)|答案(1)|浏览(140)

此问题在此处已有答案

out in System.out.println()(8个答案)
6个月前关闭。
我对“System”类中的“out”静态字段感到困惑,即使在声明中将“null”作为最终值分配给它,也不会抛出任何空指针异常。
该语句是-“System.out.println();“-为了理解整个语句的实现,我使用Eclipse IDE通过在语句上按ctrl并单击”Open Declaration“选项追溯到了它的实现。
这就是在“System”类中声明“out”静态字段的方式。

public static final PrintStream out = null;

为了检查这种实现,我尝试了一个非常基本的代码,IDE确实抛出了一个NullPointerException。
我尝试的代码如下

public class examplo1 {
public static final TryingAnother sameTry = null;
public static void main(String[] args) {
    sameTry.addO();
    System.out.println();
}}

Trying下面的另一个类代码

public class TryingAnother {
int a = 25;

public void addO()
{
    a = a + 25;
    System.out.println(a);
}}

提前感谢您的回答!

gab6jxml

gab6jxml1#

out是默认的输出流,通常是终端。如果它是按照你写的那样声明的,那么初始化由JVM完成

相关问题