Java对象都是Object类的实例,都可直接调用该类中定义的方法,这些方法提供了处理Java对象的通用方法。
class person
{
private String name;
public Person(String name)
{
this.name=name;
}
public void info()
{
System.out.println("此人名为:"+name);
}
}
public class PrintObject
{
public static void main(String args[])
{
Person p=new Person("孙悟空");
System.out.println(p);
}
}
运行结果:Person@18a992f
当运行上面程序时,可能看到不同的输出结果:@符号后的6位十六进制数字可能发生改变。System.out.println方法只能在控制台输出字符串,而Person实例是一个内存中的对象,当使用该方法输出Person对象时,实际上输出的是Person对象的toString()方法的返回值。也就是说,下面两行代码的效果完全一样。
System.out.println(p);
System.out.println(p.toString());
toString()方法时Object类里的一个实例方法,所有的Java类都是Object类的子类,因此所有Java对象都具有toString()方法。
所有Java对象都可以和字符串进行连接操作,下面两行代码效果完全一样。
String pStr=p+"";
String pStr=p.toString()+"";
toString()是一个非常特殊的方法,他是一个“自我描述”方法,该方法通常用于实现这样一个功能:当程序员直接打印该对象时,系统将会输出该对象的“自我描述”信息,用以告诉外界该对象具有的状态信息。
Object类提供的toString方法总是返回该对象实现类的“类名+@+hashcode”值,这个返回值并不能真正实现“自我描述”的功能,因此如果用户需要自定义类能实现“自我描述”的功能,就必须重写Object类的toString方法。
例如:
class Apple
{
private String color;
private double weight;
public Apple(){ }
public Apple(String color,double weight)
{
this.color=color;
this.weight=weight;
}
//省略color、weight属性的setter和getter方法
public String toString() //重写toString方法,用于实现Apple对象的“自我描述”
{
return"一个苹果,颜色是:"+color+",重量是:"+weight;
}
}
public class ToStringTest
{
public static void main(String args[])
{
Apple a=new Apple("红色",5.68);
System.out.println(a);
}
}
运行结果:一个苹果,颜色是:红色,重量是5.68