tostring方法默认返回:全类名(包名+类名)+@+哈希值的十六进制
源码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
观察以下代码查看效果:
public class Test {
public static void main(String[] args) {
A a=new A("小钻风",5000,600);
System.out.println(a.toString());
}
}
class A{
private String name;
private int age;
private int sal;
public A(String name,int age,int sal){
this.name=name;
this.age=age;
this.sal=sal;
}
}
但是我们一般情况下会将tostring方法重写,实现我们不同的需求,下面看一下默认的idea的重写是什么状况:
public class Test {
public static void main(String[] args) {
A a=new A("小钻风",5000,600);
System.out.println(a.toString());
}
}
class A{
private String name;
private int age;
private int sal;
public A(String name,int age,int sal){
this.name=name;
this.age=age;
this.sal=sal;
}
@Override
public String toString() {
return "A{" +
"name='" + name + '\'' +
", age=" + age +
", sal=" + sal +
'}';
}
}
注意:当我们使用一个输出一个对象的时候,tostring方法会被默认调用。也就是说下面的两句话是等价的,即输出对象a的时候,就是运行了a.tostring
System.out.println(a.toString());
System.out.println(a);