网上看了好多java直接打印一个对象时,直接调用该类的toString方法 。
但是:
Object obj=null;
System.out.println(obj);//没有报错
System.out.println(obj.toString());//报空指针异常
System.out.println(obj);既然也是直接调用toString方法,为什么不报错???
原因总结如下:
1.调用Object类的toString方法,必须保证object不是null值,否则将抛出NullPointerException异常。
2.System.out.println()源码如下:(即会先判断是否为null,非null才会调用toString()方法)
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
} public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
相关详细博文介绍:http://m.blog.csdn.net/article/details?id=44727535