相信大家在学java的过程中,一定打印过对象名:下面直接看这个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public class Student { private String name; private int age;
public Student() { }
public Student(String name, int age) { this.name = name; this.age = age; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
|
然后下面测试:
1 2 3 4
| public static void main(String[] args) { Student stu = new Student(); System.out.println(stu); }
|
下面看运行结果:
WX,我打印的不是对象吗,为什么给我打印出这么一堆不是人读的玩意,这个就要从创建对象时说起。
在创建对象时,默认的toString方法是Object中的toString()方法
1 2 3
| public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
|
所以打印的就是这个样子的!那么我们就可以在Student中重写toString方法,覆盖掉Object中的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public class Student { private String name; private int age;
public Student() { }
public Student(String name, int age) { this.name = name; this.age = age; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
@Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
|
然后测试:
这下就可以打印了,所以在使用时必须重写toString方法,否则默认的就是Object的toString方法!