始终要覆盖toString】的更多相关文章

java.lang.Object提供了toString方法的一个实现,它包含类的名称,以及一个“@”符号,接着是散列码的无符号十六进制表示法,例如“PhoneNumber@163b91”.在实际应用中,toString方法应该返回对象中包含的所有值得关注的信息. 指定toString返回值的格式有不足之处:如果这个类已经被广泛使用,一旦指定格式,就必须始终如一地坚持这种格式.无论是否决定指定格式,都应该在文档中明确地表明意图. 参考资料 <Effective Java 中文版 第2版> 第10…
始终要覆盖toString   虽然java.lang.Object提供了toString方法的一个实现,但它返回的字符串通常并不是类的用户所期望看到的.它包含类的名称,以及一个"@"符号,接着是散列码的无符号十六进制表示法,例如"PhoneNumber@163b91".toString的通用约定指出,被返回的字符串应该是一个"简介的,但信息丰富,并且易于阅读的表达形式"[JavaSE6].尽管有人认为"PhoneNumber@163b…
Object类提供的toString()方法如下: public String toString() {    return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 如果我们直接打印一个对象,就会调用这个对象的toString()方法,如果我们没有为该类覆盖toString()方法, 我们可以看出toString()方法,返回的是 "类名@散列值的十六进制". toString(…
java.lang.Object的toString方法的实现: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 这通常不是用户期望看到的,它包含类名称,一个“@”符号,以及散列码的无符号十六进制表示法. toString通用约定指出,被返回的字符串应该是一个“简洁的,但信息丰富,并且易于阅读的表达形式”,进一步的约定指出,建议所有的子类都覆…
覆盖equals是视情况覆盖toString 1.toString返回字符串 className@163b91 -calssName 类的名称 @ @ 163b91 散列码的无符号十六进制表示法 2.toString方法应该返回对象中包含的所有值得关注的信息 3.如果这个类已经被广泛使用,一旦指定格式,就必须始终如一地坚持这种格式 return String.format("(%03d)%03d-%04d",areaCode,prefix.linNumber);…
在学习本篇博文前,建议先学习完本人的博文--<详解 继承(上)-- 工具的抽象与分层> 在本人之前的博文中曾讲过"基类"的知识,那么,本篇博文中的主题--Object类 和 基类的知识就密切相关了,那么,我们就直接进入主题吧. Object类 是JAVA所提供的一个类类型,且是 所有类的基类. 因为所有类都继承于 Object类,所以,Object类的方法 自然而言就成为 其他类的方法. 而在特殊情况下,子类继承父类时,对于父类的方法的实现过程可能不太满意. 为了处理这种情…
学生类 package com.lanxi.demo1; public class Student { //创建属性 姓名,学校,年龄 private String name; private String school; private int age; public Student(String name, String school, int age) { //创建有参构造方法 super(); this.name = name; this.school = school; this.ag…
本文涉及到的概念 1.重载toString方法的意义 2.两个注意事项   1.重载toString方法的意义 重载toString,返回关于当前实例的描述信息.这在调试错误,打印实例信息时,可以带来有意义的信息.如果不重载,使用默认的toString实现,返回的含义不清楚.重载toString的目的是,给使用当前实例的客户端返回有意义的信息.   2.两个注意事项 a.重载toString时,如果返回的字符串是指定格式的,那么,要添加注释说明该格式.并且,在以后的实现中,不要轻易去修改该格式,…
Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类(HashMap,HashSet等)将不能正常工作. 8.覆盖equals时请遵守通用约定 无需覆盖equals的情形: 类的每个实例本质上是唯一的.类代表的是活动实体而不是值的概念.(例如,类Thread) 不关心类"逻辑相等"的功能,从Object继承的equals实现已经足够.(例如,…
尽管Object是一个具体的类,但设计它主要是为了扩展.它的所有非final方法都有明确的通用约定.任何一个类在override时,必须遵守这些通用约定. 一.覆盖equals时请遵守通用的约定 1.Object中默认的equals方法约定是:类的每个实例都只与它自身相等.当类有自己特有的“逻辑相等”的概念时,就应该覆盖equals方法. 2.Timestamp对Date进行了扩展,Timestamp的equals实现确实违反了对称性.如果Timestamp和Date混合一起使用,可能导致不正确…