始终重写 toString 方法

虽然 Object 类提供了 toString 方法的实现,但它返回的字符串通常不是你的类的用户想要看到的。
它由类名后跟一个「at」符号(@)和哈希码的无符号十六进制表示组成,例如
[email protected] 。 toString 的通用约定要求,返回的字符串应该是「一个简洁但内容丰富的表
示,对人们来说是很容易阅读的」。虽然可以认为 [email protected] 简洁易读,但相比于 707-
867-5309 ,但并不是很丰富 。 toString 通用约定「建议所有的子类重写这个方法」。好的建议,的确
如此!
虽然它并不像遵守 equals 和 hashCode 约定那样重要 (条目 10 和 11),但是提供一个良好的 toString
实现使你的类更易于使用,并对使用此类的系统更易于调试。当对象被传递到 println、printf、字符串
连接操作符或断言,或者由调试器打印时,toString 方法会自动被调用。即使你从不调用对象上的
toString,其他人也可以。例如,对对象有引用的组件可能包含在日志错误消息中对象的字符串表示。
如果未能重写 toString,则消息可能是无用的

原文地址:https://www.cnblogs.com/lIllIll/p/12589851.html

时间: 2024-11-14 21:00:59

始终重写 toString 方法的相关文章

Effective Java 第三版——12. 始终重写 toString 方法

Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 12. 始终重写 toString 方法 虽然Object类提供了toString方法的实现,但它返回的字符串通常不是你的类的用户想要看到的. 它由类名后跟一个"

[C#编程指南]重写ToString方法

C# 中的每个类或结构都隐式继承 Object 类. 因此,C# 中的每个对象都会获得 ToString 方法,此方法返回该对象的字符串表示形式. 例如,所有 int 类型的变量都有一个 ToString 方法,此方法可让这些变量将其内容作为字符串返回: int x = 42; string strx = x.ToString(); Console.WriteLine(strx); // Output: // 42 创建自定义类或结构时,应该重写 ToString 方法,以便向客户端代码提供类型

C#...何时需要重写ToString()方法?

一般类型,都是继承自System.Object类,默认情况下,object类的ToString方法会返回当前类的类型的字符串表达形式.但也有例外!! DateTime,它就重写ToString方法,DateTime类型的实例的ToString方法返回的就是一个日期的字符串表达形式,而不是DateTime类型的字符串表达形式. 还有一种使用的情况就是,当我们有了一个Student类时,我们使用Console.WriteLine(student),将会输出 "命名空间.Student".这

整个对象也可以打印?-重写toString方法

对象也可以打印? 看到对象是可以打印的,打印了全类名+内存地址 若想自定义打印类的详细信息就要在Person类中重写toString方法 @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("姓名:"+name+"\n"); sb.append("年级:"+gender+"\n"); sb.append(&

重写ToString()方法

重写ToString()方法子类可以重写父类的虚方法Person p=new Person();Console.WriteLine(p.ToString());Console.Readkey(); public class Person{ public override void ToString() { return "Hello World"; } }

java重写toString方法

在输出对象属性时,重写toString按照你希望的输出形式重写 object类里的toString只是把字符串的直接打印,数字的要转化成字符再打印,而对象,则直接打印该对象的hash码.所以当你要想按照你想要的格式去字符串一些对象的时候,就需要重写toString了. 在实体类中重写toString方法 public String toString() { return "Zoo{" + "id=" + id + ", name='" + nam

java重写toString()方法

toString()方法是Object类的方法,调用toString()会返回对象的描述信息. 1)为什么重写toString()方法呢? 如果不重写,直接调用Object类的toString()方法,打印的是该对象的内存地址(类名@哈希码值).如下代码所示: class Person { String name; String sex; int age; public Person() {} public Person(String name, String sex, int age) { t

为何重写toString方法后会使哈希码能够打印出来

首先还是推荐lz看源代码 简单的讲之所以调用了toString()方法,不是什么编译器默认的,而是因为lz你调用的是out.print()方法仔细看源代码,在PringStream类中,print方法是这样写的 public void print(Object obj) { write(String.valueOf(obj)); }此时调用了String的静态方法valueof这个方法是这样的 public static String valueOf(Object obj) { return (

java对象重写toString方法

java Object的toString方法定义是 [email protected],然而对于对象,很多时候这玩意并没有什么卵用,现在比较常用的需求是将对象转为json字符串,只需在对象中做如下修改即可: import com.alibaba.fastjson.JSON; @Override public String toString() { return JSON.toJSONString(this); }