toString()方法是Object類的方法,調用toString()會返回對象的描述信息。
1)為什么重寫toString()方法呢?
如果不重寫,直接調用Object類的toString()方法,打印的是該對象的內存地址(類名@哈希碼值)。如下代碼所示:
class Person { String name; String sex; int age; public Person() {} public Person(String name, String sex, int age) { this.name = name; this.sex = sex; this.age = age; } } class Demo { public static void main(String[] args) { Person p = new Person(); System.out.println(p); } }
運行結果:Person@10dea4e
從上面代碼可知,調用p的toString方法,打印出來的信息是類名+內存地址值。不符合要求。根據我們之前學的繼承,假如父類的指定的功能能不能滿足要求,那么子類可以復寫父類的功能函數,那么該對象再調用toString()方法時,則會調用子類復寫的toString方法。
(2)一般什么時候重寫toString方法?
一般在編寫代碼,POJO類必須重寫toString方法。如果繼承了另一個POJO類,注意在前面加一下super.toString。
POJO(Plain Ordinary Java Object)即普通的java類,具有一部分getter/setter方法的那種類就可以稱作為POJO類。重寫toString()方法后,在方法執行跑出異常時,可以直接調用POJO的toString()方法打印其屬性值,便於排查問題。
(3)如何重寫toString()?
toString()方法重寫代碼樣例如下:
class Person { String name; String sex; int age; public Person() { } public Person(String name, String sex, int age) { this.name = name; this.sex = sex; this.age = age; }
@Override public String toString() { return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]"; } }
編程習慣:開發者要對自定義的類重寫toString(),對對象做詳細的說明。
