java类中成员变量输出总是输出collection_and_map.Teacher@7852e922
构建类后使用javabean书写类,调用时发现添加的变量输出不了总是输出类似于地址的东西。
原因在于:
1.toString()方法是Object类里的方法,所有类都继承自Object,因此所有类都拥有toString()方法。
2.默认的toString()方法输出一个对象时的格式:
Object 类的 toString 方法返回一个字符串,该字符串由:包名.类名@此对象哈希码的无符号十六进制表示组成。想要返回添加的结果必须重写toString()方法。
学生类:
class Student{
private String sid;
private String sname;
public void setSid(String sid) {
this.sid=sid;
}
public String getSid() {
return this.sid;
}
public void setSname(String sname) {
this.sname=sname;
}
public String getSname() {
return this.sname;
}
public void Student() {
}
public Student(String sid,String sname) {
this.setSid(sid);
this.setSname(sname);
}
}
测试类:
public class ClassChapter {
public static void main(String[] args) {
Student s1=new Student("s001","小明");
Student s2=new Student("s002","小张");
Student s3=new Student("s003","小王");
System.out.println(s1+"\n"+s2+"\n"+s3);
}
}
输出结果:
重写toString()方法的Student类:
class Student{
private String sid;
private String sname;
public String toString() { //注意当是String类型是一定要重写tostring方法不然输出collection_and_map.Teacher@7852e922
return sid+" "+sname;
}
public void setSid(String sid) {
this.sid=sid;
}
public String getSid() {
return this.sid;
}
public void setSname(String sname) {
this.sname=sname;
}
public String getSname() {
return this.sname;
}
public void Student() {
}
public Student(String sid,String sname) {
this.setSid(sid);
this.setSname(sname);
}
}
结果: