先看下面程序:
class Person
{
private String name;
public Peron(String name)
{
this.name = name;
}
public void info()
{
System.out.println("这个人叫" + name);
}
}
public class PrintObject
{
public static void main(String[] asgs)
{
Person p = new Perosn("路人甲");
System.out.println(p);//注意这句
}
}
运行上述程序,我们可以看到如下结果:
Person@f72617
当我们输出p的时候,实际上输出的是Person对象的toString()方法的返回值,System.out.println方法只能在控制台输出字符串。
System.out.println(p);
System.out.println(p.toString());
这两串代码的效果完全一样。
toString方法是Object类里的一个实例方法,所有Java类都是Object类的子类,因此所有Java对象都具有toString方法。
toString方法实则就是一个"自我描述"方法,描述的规则是: 类名+@+hashcode值。
但我们真正需要"自我描述"功能的时候,往往需要用户自定义这个功能。
public String toString()
{
return "这个人叫"+name;
}
这样使用System.out.println(p)的时候,就可以得到我们真正需要的数据。