在我们定义一个类的时候都会创建一个String 类型的toString()方法那么这个方法真正的作用及原理,为什么在输出类变量的时候会输出toString()的返回值
1我们定义的类默认的父类是Object类型,请看下面的源代码
public void println(Object x)
{
String s = String.valueOf(x);
synchronized (this)
{
print(s);
newLine();
}
}
详解:当我们把一个有指向对象的类变量给Object类型的变量,因为Object是父类变量所以x指向子类中拥有父类的方法,(多态方法)
2下面请看valueOf(x)方法的源代码
public static String valueOf(Object obj)
{
return (obj == null) ? "null" : obj.toString();
}
详解:当我们把x给obj的时候obj会得x所指向的对象,并判断当前所指向的对象是否为空,如果不为空将返回当前对象的toString()类型,也就是子类中的toString 类型
3.下面我们看以下toString()方法的源代码
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
//toString()方法是Object类中的一个方法,返回的是ss.链表@154283a
//当前类的名字和@还有一串字符串,至于字符串的产生原因这里的就不叙述了因为我们主要说的事toString();
4.总上所述,在一个类中定义一个toString的方法实际上为了不用通过类变量调用方法来达到显示值。