首先toString()在Java API的意思是:返回该对象的字符串表示. toString()是Object类的方法,只要继承了Object类都可以重写toString()方法, 打印一个对象默认是调用对象的toString()方法。 我们来看看Object的toString()方法底层源码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
得到的是 类名@+地址名(哈希码)所以我们一般都会重写toString()方法,打印出我们想要看的东西。
上代码:
public class InFo {
private String name;
private Integer age;
public InFo(){
/**不写无参构造会默认这个类有无参构造。只写有参构造,不写无参构造那么就没有无参构造了。调用时只会调用含参构造,以后可能会造成很多麻烦,一般都写上无参构造。 */
System.out.println("InFo无参构造");
}
public InFo(String name,Integer age){
super(); //找Object的构造方法
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "InFo{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public void setAge(int age) {
this.age = age;
}
public static void main(String[] args) {
/**
* java 字典 JDK api
* toString() 返回该对象的字符串表示
*
*
* */
InFo info = new InFo("李四",20);
InFo info1 = new InFo();
System.out.println(info); //
System.out.println(info.getName()+"----"+info.getAge());
System.out.println(info.toString());
/**
info 与info.toString打印结果是一样的。
打印一个对象默认是调用对象的toString()方法。
**/
}
}
代码运行结果: