今天做练习引用类型数组,发现一个有意思的事儿,我想不明白,前来求解,为什么主函数没调用toString(),输出结果却是toString()形式
public class Test {
public static void main(String[] args) {
Person[] people = new Person[3];
String[] names = {"徐凤年", "李淳罡", "王仙芝"};
int[] ages = {25, 35, 55};
int[] height = {180, 188, 175};
for (int i = 0; i < people.length; i++) {
people[i] = new Person();
people[i].name = names[i];
people[i].age = ages[i];
people[i].height = height[i];
}
for (Person p : people) {
System.out.println(p);
}
}
}
class Person {
public String name;
public int age;
public int height;
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", height=" + height +
'}';
}
}
System.out.println
方法传入的如果是非String对象,那么就会自动调用对象的toString
方法。
println如果是对象类型会调用toString
如果你没有重新tostring方法,那么他会调用默认自带的tostring,你重写了就会调用你重写了的