这是Object的方法,而所有类都是继承Object,所以“所有对象都有这个方法”
先看以下代码:
package com.heima.object;
import com.heima.bean.Student;
public class Demo3_ToString {
public static void main(String[] args) {
Student s=new Student("张三",28);
String str=s.toString();
System.out.println(s);
}
}
运行结果:
com.heima.bean.Student@15db9742
运行结果表示:
@左边表示的是类名,
右边表示的hashCode值经过十六进制转换的结果
下面我们继续看一下Object类的toString方法实现方式就一目了然了:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
getClass().getName表示获取运行类对象名称
Integer.toHexString(hashCode())表示将hashCode()转换成十六进制的形式展出
经过上述解释,发现这样调用toString展示结果没有什么用...,Object是所有类的父类,表示我们可以对toString进行重写。
package com.heima.bean;
public class Student {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
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 "我的姓名是:"+name+",我的年龄是:"+age;
}
}
下面我们在继续运行Demo3_ToString文件,运行结果如下:
我的姓名是:张三,我的年龄是:28
发现没有?把方法重写后,这样可以获取属性值,比没有重写前有意义多了,目前了解就这么多。
如果直接直接打印对象的引用,会默认调用toString方法,如下图: