目录
toString方法的功能
返回该对象的字符串表示。默认返回:全类名(包名+类名)+@+哈希值的十六进制(哈希值就是通过hashCode方法得到的一个整数)
Object类的toString方法
源代码
/*
Object类中toString方法的源码
//getClass().getName() 类的全类名
//Integer.toHexString(hashCode()):把对象的hashCode值转换成十六进制
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
*/
子类没有重写的案例
package com.hspedu.object_;
public class ToString {
public static void main(String[] args) {
/*
Object类中toString方法的源码
//getClass().getName() 类的全类名
//Integer.toHexString(hashCode()):把对象的hashCode值转换成十六进制
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
*/
Monster monster = new Monster("小钻风", "巡山", 4500);
//调用这个对象的toString方法,
// 此时在子类-Monster中并没有重写toString方法,所以调用的是Object类的toString方法
//返回:com.hspedu.object_.Monster@4eec7777
//com.hspedu.object_.Monster为全类名
//4eec7777为monster的hashCode值的1324119927十六进制
System.out.println(monster.toString());
System.out.println(monster.hashCode());//输出1324119927(十进制)
}
}
class Monster{
private String name;
private String job;
private double sal;
public Monster(String name, String job, double sal) {
this.name = name;
this.job = job;
this.sal = sal;
}
}
子类重写toString
使用Alt+Insert自动重写
重写之后可以打印出对象的属性
@Override
public String toString() {//shuchu
return "Monster{" +
"name='" + name + '\'' +
", job='" + job + '\'' +
", sal=" + sal +
'}';
}
子类重写toString之后,再调用时,根据运行类型,就会首先调用子类的toString方法
输出结果
最后一条
当直接输出一个对象时,toString方法会被默认的调用
例子