java面向对象中级-Object类详解.toString方法
toString方法
1. 基本介绍
- 默认返回:全类名 + @ +哈希值的十六进制。(查看Object的toString方法)子类往往重写toString方法,用于返回对象的属性信息
案例:
package com.yzjedu.object_;
public class ToString_ {
public static void main(String[] args) {
/*
Object的toString()源码
//1. getClass().getName() 类的全类名(包名+类名)
2. Integer.toHexString(hashCode()) 将对象的hashCode值转为16进制字符串
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
*/
Monster monster = new Monster("小妖怪", "巡山的", 1000);
System.out.println(monster.toString());//没有重写toString方法,默认调用Object类的toString方法
}
}
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方法,打印或拼接对象时,会自动调用该对象的toString形式。
案例:
/*
我们将重写后的方法加入上面案例的Monster类中
*/
//重写toString方法,输出对象的属性
//使用快捷键 alt + insert -> toString
@Override
public String toString() {//默认重写后,一般是把对象的属性值输出,当然也可以自己定制
return "Monster{" +
"name='" + name + '\'' +
", job='" + job + '\'' +
", sal=" + sal +
'}';
}
你会发现用toString方法输出的值变成了 name job 和 sal。
-
当直接输出一个对象时,toString方法会被默认调用
比如:System.out.println(monster); 就会 默认调用 monster.toString()