java中打印一个数组名或者对象名,出来一个地址是怎么回事?

在这里插入图片描述

相信大家在学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方法!