java中打印一个数组名或者对象名,出来一个地址是怎么回事?
程序员文章站
2024-01-20 16:09:40
相信大家在学java的过程中,一定打印过对象名:下面直接看这个例子: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 get...
相信大家在学java的过程中,一定打印过对象名:下面直接看这个例子:
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;
}
}
然后下面测试:
public static void main(String[] args) {
Student stu = new Student();
System.out.println(stu);
}
下面看运行结果:
WX,我打印的不是对象吗,为什么给我打印出这么一堆不是人读的玩意,这个就要从创建对象时说起。
在创建对象时,默认的toString方法是Object中的toString()方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
所以打印的就是这个样子的!那么我们就可以在Student中重写toString方法,覆盖掉Object中的:
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方法!
本文地址:https://blog.csdn.net/weixin_42893085/article/details/107474730