首先来看一段代码:
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,如果不是直接输出调用这个方法。
相比于下面 那行代码第一行代码更加安全。