Object的toString决定了重写equals

默认的toString结果
public String toString(){
    return getClass().getName()+"@"+Integer.toHexString(hashCode());
}
正是因为hashCode的区别,obj1.equals(obj2)结果为false。其中obj1和obj2都是Object对象。

时间: 2024-10-24 02:49:22

Object的toString决定了重写equals的相关文章

object 类 toString() 和 equals() 的覆写

基本作用: objiect类是所有类的父类. 任何一个类定义的时候如果没有明确定义了父类的话,默认父类是Object类. class A extends Object{} 在整个java里面,类的继承关系一直存在的.例如: String 类 这时候一个好处就出现了,利用Object类可以接受一切类. Object obj = new Book() ://向上转型 Obect obj = “Hello”  : //向上转型 如果不知道参数类型的时候,使用Object是最好的选择 http://do

重写equals和hashCode方法的示例

如果一个类有自己特有的"逻辑相等",且需要以此进行比较时,那么就需要重写equals方法. 在Object的规范中,重写equals方法有下面几条通用约定: 自反性. x.equals(x) == true 对称性.if   y.equals(x) == true , then  x.equals(y) == true 传递性.if   x.equals(y) == true y.equals(x) == true , then x.equals(z) == true 一致性.如果比较

【原创】关于java对象需要重写equals方法,hashcode方法,toString方法 ,compareto()方法的说明

在项目开发中,我们都有这样的经历,就是在新增表时,会相应的增加java类,在java类中都存在常见的几个方法,包括:equals(),hashcode(),toString() ,compareto()这四个方法,对于刚刚接触java的初学者来说,对于这块可以没有更深入的了解,只是单纯意义上的复制粘贴,并没有很好的去了解.现在借用这个时间给大家说说这几个方法作用. equals: 比较两个对象相等时使用(需要配合Hashcode一起使用,在后边再进行详细解释)   hashcode: 重写has

第十六节(Object类(toString() 、finalize、equals方法)

Object 类类 a) Object 类是所有 Java 类的根基类 b) 如果在类的声明中未使用 extends 关键字指明其基类,则默认基类为 Object 类 toString() 返回该对象的字符串表示. 通常 toString 方法会返回一个 “以文本方式表示” 此对象的 字符串,Object 类的 toString 方法返回一个字符串,该字符串由类名加标记 @和此对象哈 希码的无符号十六进制表示组成 /* 关于Object 中的 toString 方法: sun在Object类中设

一个对象toString()方法如果没有被重写,那么默认调用它的父类Object的toString()方法,而Object的toString()方法是打印该对象的hashCode,一般hashCode就是此对象的内存地址

昨天因为要从JFrame控件获取密码,注意到一个问题,那就是用toString方法得到的不一定是你想要的,如下: jPasswordField是JFrame中的密码输入框,如果用下面的方法是得不到密码的value的: jPasswordField.getPassword().toString(); 这是因为jPasswordField.getPassword()得到的是字符数组char[],然后调用toString方法得到的是这个字符数组的hashCode,即字符数组的内存地址. 只有用下面的方

JAVA中重写equals()方法的同时要重写hashcode()方法

object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true:注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码.如下:(1)当obj1.equals(obj2)为true时,obj1.hashCode() == obj2.hashCode()必须为true (2)当obj1.ha

Java的重写equals但不重写hashCode方法的影响

首先,说下equals和hashCode的关系.JDK API中关于Object类的equals和hashCode方法中说过,总结起来就是两句话:equals相等的两个对象的hashCode也一定相等,但hashCode相等的两个对象不一定equals相等. hashCode类似于一个位置值(不叫地址值,是想把每个对象所在的位置做地址值),HashSet.HashMap等集合类中常会用到. 上图中假设是对象在内存中的模型,则7—c就是位置值即hashCode,而71—74就是地址值.所以x,y和

JAVA中重写equals()方法为什么要重写hashcode()方法?

object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true:注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码.如下:(1)当obj1.equals(obj2)为true时,obj1.hashCode() == obj2.hashCode()必须为true (2)当obj1.ha

JAVA中重写equals()方法为什么要重写hashcode()方法说明

重写hashCode()时最重要的原因就是:无论何时,对同一个对象调用hashCode()都应该生成同样的值.如果在将一个对象用put()方法添 加进HashMap时产生一个hashCode()值,而用get()取出时却产生了另外一个 hashCode()值,那么就无法重新取得该对象了.所以,如果你的hashCode()方法依赖于对象中易变的数据,那用户就要小心了,因为此数据发 生变化时,hashCode()就会产生一个不同的hash码,相当于产生了一个不同的"键". Object的h