咱们知道,Java全部的类都是Object类的派生类,toString就是Object类中的一个方法。java
咱们看看它的源代码。ide
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
能够看见,toString方法返回的是一个字符串。该字符串由 类名+ "@" + 此对象的哈希码(无符号16进制)。code
当咱们没有重写Object类中的toString方法时,在调用System.out.println()直接传入对象名的时候,会自动调用对象的toString方法,打印出上述的内容。对象
如:字符串
class Man{ public Man() { } } public class Test { public static void main(String[] args) { Man Terry = new Man(); System.out.println(Terry); } } // 结果 // Man@8efb846
既然咱们知道在方法或定义,强制类型为String时,直接使用对象名会隐性调用toString方法,那么咱们天然能够重写toString方法实现本身的目的。get
import java.util.*; class Man{ static int code = 0; private int number = -1; public Man() { code++; number = code; } @Override public String toString() { return "I am No." + number; } } public class Test { public static void main(String[] args) { Man Terry = new Man(); Man Tom = new Man(); Man Mary = new Man(); System.out.println(Terry); System.out.println(Tom); System.out.println(Mary); } } // 结果 /* I am No.1 I am No.2 I am No.3 */