網上看了好多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
