原!! java直接打印一個對象時,並不是直接調用該類的toString方法 ,而是會先判斷是否為null,非null才會調用toString方法


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM