System.out.println()源码分析

首先来看一段代码:

        Object object=new Object();
        object=null;
        System.out.println(object);
        System.out.println(object.toString());

大家可以先自己想一下会输出什么?
正确的输出就是下面所示:

null
Exception in thread "main" java.lang.NullPointerException

那么就来分析一下这句话的源码:
源码的第一句就是下面的:

 public void println(Object x) {
    
    
        String s = String.valueOf(x);
        synchronized (this) {
    
    
            print(s);
            newLine();
        }
    }

大概意思就是传过来一个形参然后转换成字符串格式。
然后看一下valueOf()这个方法是怎么实现的;

 public static String valueOf(Object obj) {
    
    
        return (obj == null) ? "null" : obj.toString();
    }

传过来一个参数,首先判断引用是不是空值,如果是输出null,如果不是直接输出调用这个方法。
相比于下面 那行代码第一行代码更加安全。

猜你喜欢

转载自blog.csdn.net/qq_42678668/article/details/112995597