1、Java所有的對象都是Object類的實例,都可以直接調用該類中定義的方法,這些方法稱為通用方法
2、toString()方法即為Object類中定義的通用方法之一
3、平時我們如果在控制台直接打印輸出一個對象的實例時,其實調用的就是Object類的toString()方法,如下:
class Apple{ private String color; private double weight; private String name; public Apple(){ } public Apple(String name){ this.name=name; } } public class ToStringTest{ public static void main(String[] args){ Apple p=new Apple("張三"); //-下面兩個輸出結果完全一致, //-雖然輸出的是Apple類的實例對象 //-其實輸出的是Object類的toString()方法 //-可以用重寫Object類toString()方法的這種方式來給對象寫一個"自我描述" System.out.println(p); System.out.println(p.toString()); } }
輸出結果:
針對上面的輸出結果進行分析:
1、System.out的println()方法只能在控制台上輸出字符串,而Apple類實例是一個在內存中的對象,當用這種方法輸出對象時,實際上輸出的是Object類中的toString()方法返回值
2、toStrong()方法是Object類里的一個實例方法,所有的Java類都是Object類的子類,所以所有Java對象都有toString()方法
3、toString()方法是一個“自我描述”的方法,當輸出某實例對象時,可以通過重寫自定義等方式為對象實現輸出自我描述的信息
4、Object類的toString()方法默認返回該對象實現類的“類名+@+hashcode”值(如上結果中看到的那樣),這個返回值不能實現自我描述功能,所以需要重寫Object類的toString()方法來實現,如下:
class Apple{ private String color; private double weight; private String name; public Apple(){ } public Apple(String name){ this.name=name; } public Apple(String color,double weight){ this.color=color; this.weight=weight; } //-重寫Object類的toString()方法 public String toString(){ return "這是Apple類,里面有一個蘋果,顏色是:"+this.color+",重量是:"+weight; } } public class ToStringTest{ public static void main(String[] args){ Apple p=new Apple("紅色",3.2); System.out.println(p); } }
運行結果: