toString怎么用?
- 前言
- 一、什么toString?
- 二、toString的代码
- 1.重写前
- 2.重写直接继承于object类的toString
- 3.重写间接继承于object类的toString
- 总结
前言
在开发中,代码量变高之后,常常会需要查看当前对象的一些信息,这时候toString的重写应需而生!
一、什么toString?
在Java中,toString() 方法是 Object 类中定义的一个方法。toString() 方法的作用是返回对象的字符串表示。在没有重写 toString() 方法时,默认情况下返回的字符串表示为“类名@哈希码” (包名+类名@对象的16进制内存地址)的形式。 重写 toString() 方法可以自定义返回的字符串,使得输出的信息更具有可读
二、toString的代码
1.重写前
这里我们先要掌握一个知识点,继承,在我们没有继承任何一个父类之前,是默认继承Object类,也被称为隐式继承,也就是为什么有些方法,我们在自定义类中,没有写,但是可以使用的原因,这里不过多介绍,大家感兴趣可以去仔细阅读以下Object中有哪些方法。
这里可以看到,在没有重写之前,返回的是类名+@ + 这个类的哈希码值,也就是我们常说的十六进制的一个地址,那我们在开发中很多时候不想要返回地址,想要返回这个类的一系列属性,该怎么做呢?
思路:重写toString方法,使其返回当前自定义类的一些属性
2.重写直接继承于object类的toString
示例:新建一个Person类,不继承于任何类(默认隐式继承于object类)
箭头的位置,很明显没有extends,那么就代表直接隐式继承于toString类
这个时候我们在类中重写方法,可以直接手动输入public String toString(){ },在括号里书写,也可以快捷键alt + insert,里面有一个toString,可以快捷重写toString。
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", job='" + job + '\'' +
", duty=" + duty + '\'' +
'}';
}
这样我们重写后的效果就是输出类名{各种属性名:属性值}了,运行一下看看效果。
因为是字符串,可修改性比较高,大家可以在重写的时候书写成自己喜欢的样子,我这种是快捷键创建出来的所以比较规范,根据个人喜好进行修改。
3.重写间接继承于object类的toString
那现在直接继承于Object的类会重写toString了,间接继承于Object类的咋办?
一样的,第一种手动去敲,在获取你要重写这个类的属性的时候,因为有些属性是继承于父类的,所以获取属性值的时候我们就需要用get。。。()方法,例如:
我写一个Doctor类继承于Person,然后需要重写toString
代码:
public String toString() {
return "Doctor{" +
"name='" + getName() + '\'' +
", age=" + getAge() + '\'' +
", sex='" + getSex() + '\'' +
", job='" + getJob() + '\'' +
", duty=" + getDuty() + '\'' +
"office='" + office + '\'' +
'}';
}
这样就实现了doctor类中所有属性的显示,运行一下看看效果。
总结
以上就是toString的重写,大家在开发中一定要注意,自定义类(非测试类),都要重写toString,养成好习惯,否则苦不堪言,如果这篇文章帮助到了你,帮忙三连,持续更新中…