欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【java基础】为什么重写toString()方法?

程序员文章站 2022-06-07 12:02:53
不得不说,有很多java初学者写java实体类的时候,并没有真正理解重写 方法,可能是口头知道也可能是跟风随带添加 方法,并没有真正理解其意义,如果真要被问起来未必有十足把握回答上 ~中枪了咩~,这篇文章旨在帮助初学者正确解读实体类重写 方法。 解读一:java默认的toString方法来自Obje ......

不得不说,有很多java初学者写java实体类的时候,并没有真正理解重写tostring() 方法,可能是口头知道也可能是跟风随带添加tostring() 方法,并没有真正理解其意义,如果真要被问起来未必有十足把握回答上 ~中枪了咩~,这篇文章旨在帮助初学者正确解读实体类重写tostring() 方法。

解读一:java默认的tostring方法来自object 类

在java中每个类都直接或者间接继承object 类,tostring() 方法同样来自于object 类。

其实这不难理解,在没有重写tostring的前提下,每次执行system.out.println() 这个方法默认就会调用一个继承自object 类型对象的tostring 方法,这点是非常重要的基础前提!

解读二:重写tostring()方法的意义所在

简单一句话就是重写tostring() 可以理解为是对对象在打印输出时候的一种格式化。这样做符合业务逻辑,显示结果人性化。

object类里的tostring只是把字符串的直接打印,数字的要转化成字符再打印,而对象,则直接打印该对象的hash码(类似@15db9742 这样的东东),它的值大概就是等于getclass().getname()+’@’+integer.tohexstring(hashcode()) ,我这乔治脑袋看着都晕,hash码 这玩意是给机器看的,平凡的人类是看不懂的鸭,什么?你要挑战?你相信你就是不一样的烟火?那行,我就举个例子给你看看,你可以试着在一个实体类中...啥?你要我自己来?额...行,我来就我来....

1、编写一个叫person的实体类

public class person {
   private string name;

   private integer age;

    public string getname() {
        return name;
    }

    public void setname(string name) {
        this.name = name;
    }

    public integer getage() {
        return age;
    }

    public void setage(integer age) {
        this.age = age;
    }
    public person() {

    }
    public person(string name, integer age) {
        this.name = name;
        this.age = age;
    }
}

2、编写测试类

 public static void main(string[] args) {
       
        person person = new person();
        person.setage(12);
        person.setname("不一样的烟火");
        system.out.println(person);

    }

3、没重写tostring()方法的测试效果

【java基础】为什么重写toString()方法?

4、加上tostring()方法的测试效果

现在的开发工具基本都有自动生成tostring() 方法的快捷键,我想大家都懂~
【java基础】为什么重写toString()方法?

总结

1、没有重写tostring ,每执行system.out.println() 会默认调用objecttostring 方法,情况如下:
【java基础】为什么重写toString()方法?
2、重写tostring,每执行system.out.println() 会调用重写的tostring 方法,情况则会根据重写的方法打印输出成自己想得到的格式。

3、为了养成良好习惯,建议每次编写实现类都重写一下tostring() 方法!!