前言
学习Java的人都知道,Java所有类都是Object的子类。所以,所有的Java对象都可以调用Object类提供的方法。其中,toString()就是其中一个。下面讲解一下为什么会有重写toString()方法一说。
重写ToString
首先,我们先来创建一个Persion类,它只简单的包含name和sex、city、site这4个属性,当然,生成它的setter 和 getter 法。
public class Person {
private String name;
private String sex;
private String city;
private String site;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getSite() {
return site;
}
public void setSite(String site) {
this.site = site;
}
}
接下来,新建一个类,名为Test,让它包含main函数:
import com.yingjun.ssm.entity.Person;
/**
* <pre>
* @Desc
* @author cao_wencao
* @date 2019年4月28日 下午1:48:49
* @version V1.0
* </pre>
*/
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person = new Person();
person.setName("Thinkingcao");
person.setSex("男");
person.setCity("上海");
person.setSite("https://thinkingcao.blog.csdn.net");
System.out.println(person.toString());
}
}
可以看到,运行之后,结果为: com.yingjun.ssm.entity.Person@6d06d69c
注:打印一个对象,可以直接System.out.println(persion);其实println方法内部会自动调用persion的 toString() 方法。
但是,我们一般想要的结果并不是这样,因为Object类的toString()方法总是返回对象的所属类的类名 + @ + hashCode值,代表对象在内存的位置。这显然不能满足我们通常的需求。像这里,我们是希望能打印出persion的全名出来,这时,就需要重写toString()方法,因为重写了toString()之后,那么persion在调用toString()方法的时候,会优先调用自己类里的toString()方法。可自行回顾多态知识点
修改后的类如下:
public class Person {
private String name;
private String sex;
private String city;
private String site;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getSite() {
return site;
}
public void setSite(String site) {
this.site = site;
}
// 重写toString方法
@Override
public String toString() {
return "Person [name=" + name + ", sex=" + sex + ", city=" + city + ", site=" + site + "]";
}
}
这时,打印出来的结果就是 : Person [name=Thinkingcao, sex=男, city=上海, site=https://thinkingcao.blog.csdn.net]
当然,可根据不同的需求来重写toString方法。