Java直接输出一个类的对象的时候,会自动调用这个类的toString方法。这个方法在object类中,而所有的类都继承object类,所以所有的类都有toString方法。当我们不重写该方法时,该方法的实现是这样的:
getClass().getName()+'@'+Integer.toHexString(hashCode())
输出的结果是:类所在的包名.类名+'a’+哈希码值
而当我们需要输出特定格式是需要重写该方法。
package 笔记;
class TestPoint{
private int x;
private int y;
TestPoint(int x,int y){
this.x=x;
this.y=y;//注意这里面this指针的用法
}
public String toString() {
return ("["+x+","+y+"]");
}
}
public class example5_22_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
TestPoint test=new TestPoint(1,23);
System.out.println(test);
}
}
这里面我们已经重写过了toString方法,即父类object类的toString方法被覆盖。注意我们重写toString方法是注意一定要和原方法在形式上面一致,即方法的类型一定是public String的形式。
输出结果:[1,23]
没重写toString方法前的输出结果:笔记.TestPoint@16b4a017