我們知道呼叫物件的toString()方法會直接輸出物件的屬性訊息,但是具體怎麼實現的?以及如何更好地實現它?現在來學習下。
透過java文檔我們能知道,toString()方法在Object類別裡定義的,其回傳值類型為String類型,回傳類別名稱和它的參考位址。
在進行String類別與其他類型的連接操作時,自動呼叫toString()方法,demo如下:
Date now = new Date(); System.out.println("now = " + now);//相当于下一行代码 System.out.println("now = " + now.toString());
實際應用程式中,可以根據需要在使用者自訂類型中重寫toString()方法,如Stirng類別重寫了toString()方法,傳回字串的值,dome如下
System.out.println(s1);//相当于下一行代码 System.out.println(s1.toString());
基本資料型別轉換為String型別是,呼叫了對應包裝類別的toString()方法,demo如下:
int a = 10; System.out.println("a = " + a);
現在來看下jdk裡面的源碼是怎麼樣的:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
現在我們來實踐使用它:
Person p1 = new Person(); System.out.println(p1.toString());//TestEquals.Person@15db9742 System.out.println(p1);//TestEquals.Person@15db9742 因为输出的时候回默认调用Objec类toString()方法
當我們打印一個對象的參考時,實際上是預設呼叫這個物件的toString()方法
當列印的物件所在類別沒有重寫Object中的toString()方法時,預設呼叫的是Object類別中toString()方法。
傳回此物件所在的類別及對應的堆空間物件實體的首位址值。
當我們列印物件所 在類別中重寫了toString(),呼叫的就是已經重寫了的toString()方法,一般重寫是將類別物件的屬性資訊傳回。
我們也可以自訂一個tostring()方法:
//手动实现 public String toString(){ return " Person:name=" + name +" age=" + age; }
以上是java中的tostring方法怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!