1. 程式人生 > >列印類物件自動呼叫toString方法

列印類物件自動呼叫toString方法

       在講Hashtable時老師說過列印一個類物件會自動呼叫toString方法,就直接記下來了,今天又發現老師在列印Date類物件時也說會自動呼叫toString方法,所以就查看了一下幫助文件和原始碼,結果如下:

            Object類中有toString方法

摘抄:

public String toString()
返回該物件的字串表示。通常,toString 方法會返回一個“以文字方式表示”此物件的字串。結果應是一個簡明但易於讀懂的資訊表示式。建議所有子類都重寫此方法。

如Date類中覆蓋的toString方法

public String toString()
把此 Date 物件轉換為以下形式的 String
 dow mon dd hh:mm:ss zzz yyyy
覆蓋:
那麼System.out.println()怎麼呼叫了toString呢?
Systeme類中的out欄位是標準輸出流,out是static PrintStream型別的,PrintStream類有println函式,其過載形式有引數是Object的:
public void println(Object x)
列印 Object,然後終止該行。此方法首先呼叫 String.valueOf(x) 獲取列印物件的字串值,然後的行為如同先呼叫  再呼叫  一樣。
String類的valueOf函式
public static String valueOf(Object obj)
返回 Object 引數的字串表示形式。
檢視valueOf原始碼如下:
 public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
    }
所以說在列印一個類物件時會自動呼叫toString方法,如果是自己寫的類要記得覆蓋了這個方法。