Java中啥时候需要显示重载toString方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中啥时候需要显示重载toString方法相关的知识,希望对你有一定的参考价值。

为什么有的社会需要重载toString();有的时候不用啊。请解答一下

api中对于Object类,默认打印一个对象(如果这个对象的类在api上的方法中没有toString()方法)的时候,直接打印出getClass().getName() + '@' + Integer.toHexString(hashCode())这样的格式,如果这个对象类的方法中带有toString()方法,比如像String这个类中就有toString()这个方法,那么就不需要重载,一般而言,自己定义的类因为没有像String类一样本身带有toString()方法,已经自己重载了,那么一般而言我们需要重载toString()方法,还有一个很简单的方法就是,让系统帮你判断什么时候需要重载,就是编译后,发现打印出的结果类似于getClass().getName() + '@' + Integer.toHexString(hashCode())也就是比如像一个类Test中
public class Test
public static void main(String args[])
Test A=new Test();
System.out.println(A);


打印出
Test@35ce36
注意,Test是自己定义的一个类,没带有toString()方法,那么系统默认为object类来重载也就打印出上面的结果;
对于一个自己定义的类
public class Test
String name="小白";
String hobby="篮球";
public static void main(String args[])
Test A=new Test();
System.out.println(A);

public String toString()
return ("这个小孩字的名字是"+name+"\n"+"爱好是"+hobby);


打印出
这个小孩字的名字是小白
爱好是篮球
类Test中有name和hobby两个属性,我们想单单通过打印A对象就打印出自己想要的东西 比如说
("这个小孩字的名字是"+name+"\n"+"爱好是"+hobby);那么我们这个时候可以用重载toString()方法,这样可以令程序看起来更加的优雅?
当然这样也是可以的
public class Test
String name="小白";
String hobby="篮球";
public static void main(String args[])
Test A=new Test();
System.out.println("这个小孩字的名字是"+A.name+"\n"+"爱好是"+A.hobby);


这个时候不需要重载toString(),
重载的好处多多,需要慢慢去发现;
总之一个定义的类比如说Cat类,你在着这个类中定义了眼睛的颜色,皮毛的颜色,然后你就想了,我直接打印Cat的对象,可不可以将这个类的所有属性打印出来呢?这是不行的,只会打印出类名+@+hashCode,这个时候我们就需要通过重载toString来实现将类中的属性信息打印出来
3,有一个方法比较好用,就是当你运行的时候打印出类名+@+hashCode,这和你想得到的结果不一样,那么你这个时候就去重载好了,重载跟自己的需要有关,一切为了目的,这东西不用刻意去记,让系统去发现错误,让系统干多点活好了~
参考技术A 你对控制台的输出内容不满意的时候,就重写toString显示你想看到的内容和格式 参考技术B 从本质讲,只有一种情况需要重载toString:
“需要序列化(成字符串)的时候”
这一种情况表现出多种外在现象
比如
1、狭义方面,需要把对象打印显示字符串,打印过程就是对输出流的序列化。
2、需要传递给java库的各种字符接口的时候。
3、自定义的类,需要以显示成比较特殊形式的字符串。
4、等等等等
toString不是序列化的唯一方式,但用到toString就只是为了序列化成字符串
掌握序列化的技巧是关键。
=========
楼上有人说那么多,其实只是属于第1条一种表面情况。本回答被提问者采纳
参考技术C 看需要喽,好好看看定义,你就会明白喽

以上是关于Java中啥时候需要显示重载toString方法的主要内容,如果未能解决你的问题,请参考以下文章

方法“ToString”没有重载需要 1 个参数

格式化 DateTime 错误“方法 'ToString' 没有重载需要 1 个参数”

重载 toString 方法

如何重载单个变量的TOSTRING方法 C#中

重载tostring()方法重要性

在java程序中啥条件下要用import语句?啥时候不用?