首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏小小码农一个。

    == 与equals和hashCode与equals

    equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况: 情况1:类没有覆盖 equals() 方法。 则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。 情况2:类覆盖了 equals() 方法。 方法是被重写过的,因为 object 的 equals 方法是比较的对象的内存地址,而 String 的 equals 方法比较的是对象的值。 面试官可能会问你:“你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?” hashCode()与equals()的相关规定 如果两个对象相等,则hashcode一定也是相同的 两个对象相等,对两个对象分别调用equals方法都返回true 两个对象有相同的hashcode值,

    1.1K20发布于 2020-08-04
  • 来自专栏快乐阿超

    花式Equals

    ——鲍勃.迪伦 相信大伙在开发中经常用equals去比较两个对象是否相等,这里分享一下一些别的写法 注意翻转equals:例如我们之前是这样写ruben.equals("ruben"),一定要改成 "ruben".equals(ruben) 养成好习惯,利人利己 第一种写法,最常见的这种 String ruben = "ruben"; String rabbit = "ruben"; String achao = "achao"; // 常用的Object.equals System.out.println(ruben.equals(rabbit)); 第二种写法,避免空指针 // 避免空指针的 java.util.Objects.equals System.out.println(Objects.equals(ruben, rabbit)); 比较数组的equals // 比较数组的Objects.deepEquals // Junit的org.junit.Assert.assertEquals(java.lang.Object, java.lang.Object),用于测试,如果equals结果为false则抛出Error

    46320编辑于 2022-08-16
  • 来自专栏JavaEdge

    说说equals() (中)

    要判断两个对象的内容是否相等,不要自己写方法(isSame())去判断,而是应该重写父类的 equals方法(这里的父类是Object),我们知道String重写了equals()方法,所以这儿打印size 原来我们跟本就不是重写(覆盖)了父类的equals方法,而是自己又写了一个参数为Person的equals方法,根本不是重写,只是重载了父类的方法而已。 再执行本文开始那段代码,不出所料,问题依旧 很明显,Person这个类在重写equals()方法后,虽然已经支持List,但还不支持Set。 总结:当我们在实际业务中需要重写(覆盖)equals方法时,根据规范,我们一定要重写(覆盖)hashCode方法。在实际开发过程中,不建议一上来就重写equals方法,除非你有特殊的需求。 equals方法了

    63630编辑于 2022-11-29
  • 来自专栏JAVA及MySQL技术干货分享

    java equals方法

    object类中的equals方法用于检测一个对象是否等于另外一个对象。在Object类中,这个方法将判断两个对象是否具有相同的引用。如果两个对象具有相同的引用,它们一定是相等的。

    67730发布于 2021-04-15
  • 来自专栏崩天的勾玉

    浅谈equals、hashcode、==

    equals equals方法是基类Object中的实例方法,因此对所有继承于Object的类都会有该方法。「该方法本意是比较内容是否相同」。 Object类中equals方法的实现: public boolean equals(Object obj) { return (this == obj); } 在Object类中,equals equals 重写原则: 对称性: 如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true” ; 自反性:x.equals(x)必须返回是“true” ; 类推性 : 如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true” ; 一致性: 如果x.equals(y)返回是“true ”,只要x和y内容一直不变,不管你重复x.equals(y)多少次,返回都是“true” ; 对称性: 如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true”。

    88610编辑于 2021-12-20
  • 来自专栏二猫の家

    .equals和name.equals有什么区别?

    两个都是比较“”的地址和name的地址是否指向同一个地址,即判断name是否为“”, 建议用前者,因为name可能是null,此时name.equals("")就会报错,而前者则会避免这个问题避免了抛出空指针异常 如果A为null,则A.equals(" “)出现nullPointerException,若写为” ".equals(A),则可以防止nullPointerException。

    50320编辑于 2022-11-30
  • 来自专栏await

    java equals与==

    equals与==的区别 ==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同 ==是指对内存地址进行比较 , equals()是对字符串的内容进行比较 ==指的是对象是否相同, equals()指的是值是否相同 //创建两个对象 String num1 = new String("Hello"); String new String("Hello"); //b1是num1 == num2 boolean b1 = num1 == num2; //b2是num1.equals (num2) boolean b2 = num1.equals(num2); System.out.println("b1 = " + b1); //b1 = false System.out.println("b2 = " + b2); //b2 = true //==指的是`对象`是否相同, equals()指的是`值`是否相同 本文共

    45920发布于 2021-09-09
  • 来自专栏JavaEdge

    说说equals() (上)

    String s1 = new String("100"); String s2 = new String("100"); System.out.println(s1.equals 我们先看一下Person这个类,并没有equals方法呀,那为什么不报错呢? 在Java中,如果一个类没有继承其它类,那么它默认继承Object这个类,打开Object这个类看一下,发现如下代码,Person这个类的equals方法就继承自这里 public boolean equals 我们再来看看Integer这个类, equals的实现如下: public boolean equals(Object obj) { if (obj instanceof Integer 最后是我们String的实现 public boolean equals(Object anObject) { //如果两个对象指向同一个引用,直接返回true if (

    46040编辑于 2022-11-29
  • 来自专栏kenvie

    Java - equals与==

    equals与== 区别 ==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同 ==是指对内存地址进行比较 , equals()是对字符串的内容进行比较 ==指的是对象是否相同, equals()指的是值是否相同 示例 public class demo { public static void main(String[] args) { new String("Hello"); //b1是num1 == num2 boolean b1 = num1 == num2; //b2是num1.equals (num2) boolean b2 = num1.equals(num2); System.out.println("b1 = " + b1); //b1 = false equals区分的是值是否相同。 版权属于:kenvie 本文链接:https://kenvie.com/403 商业转载请联系作者获得授权,非商业转载请注明出处。

    41910编辑于 2022-01-20
  • 来自专栏日常技术分享

    Java == 与 equals

    equals equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况: 情况1:类没有覆盖 equals() 方法。 则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。 情况2:类覆盖了 equals() 方法。 一般,我们都覆盖 equals() 方法来比较两个对象的内容是否相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。 "aa==bb"); if (a == b) // false,非同一对象 System.out.println("a==b"); if (a.equals 方法是被重写过的,因为 object 的 equals 方法是比较的对象的内存地址,而 String 的 equals 方法比较的是对象的值。

    58010发布于 2020-01-02
  • 来自专栏涓流

    equals和hashcode

    euqlas equals的作用是用来判断两个对象是否相等,定义在Object中,通过两个对象的地址来判断对象是否相等。 类没有覆盖equals方法时 如果类没有覆盖equals方法,如果通过equals比较两个对象,实际上是比较两个对象是不是同一个对象,相当于==比较 覆盖了equals方法的情况 public class hashCode() System.out.printf("p1.equals(p4) : %s; p1(%d) p4(%d)\n", p1.equals(p4), p1.hashCode (person.name) && age==person.age; } } } ==和equals 如果equals没有被重写,则与==相同,都是比较两个对象地址是不是相等 hashCode() System.out.printf("p1.equals(p4) : %s; p1(%d) p4(%d)\n", p1.equals(p4), p1.hashCode

    77710编辑于 2022-06-28
  • 来自专栏开发笔记

    equals&hashCode

    经典规则:如果重写了equals,必须重写hashCode 为什么??? 这个规则考虑的应用场景:如果你的对象可能放入HashMap,HashSet,不重写会出问题 问题场景: new一个对象,重写了equals,但是没有重写hashCode,再new一个对象,原对象.equals 计算hash冲突时使用hashCode而不是equals: hashCode效率更高 通过这个问题得到的反思: 之前一直有知道这个规则,但只是笼统的记住它,而不是理解。

    67110发布于 2020-08-17
  • 来自专栏沉默王二

    equals 和 == 之战

    我说,“这个问题也可以引申为 .equals() 和 ‘==’ 操作符有什么区别。” “==”操作符用于比较两个对象的地址是否相等。 .equals() 方法用于比较两个对象的内容是否相等。 “那就来看一下 .equals() 方法的源码吧。”我说。 第一题: new String("小萝莉").equals("小萝莉") “输出什么呢?”我问。 “.equals() 比较的是两个字符串对象的内容是否相等,所以结果为 true。”三妹答。 1)Objects.equals() Objects.equals() 这个静态方法的优势在于不需要在调用之前判空。 Objects.equals() 用起来就完全没有这个担心。

    63440发布于 2021-06-16
  • 来自专栏java知识

    == 和 equals() 的区别?重写 equals() 为什么必须重写 hashCode()?

    public boolean equals(Object obj) { return (this == obj);}这意味着,若自定义类未重写 equals(),调用该方法时,效果与 == 完全一致 为 null,直接调用 id.equals() 会报错)。 关键约定:equals() 相等 → hashCode() 必须相等Java 官方对 equals() 和 hashCode() 制定了以下核心约定(缺一不可):约定 1:若两个对象通过 equals( 正确做法:重写 equals() 时同步重写 hashCode()重写 hashCode() 时,需保证“equals() 相等的对象,哈希值一定相等”,通常会基于 equals() 中用到的字段(如 重写 equals() 必须重写 hashCode(),核心是遵守 Java 官方约定,确保“equals() 相等的对象,hashCode() 必相等”,否则会导致哈希集合逻辑异常。

    26910编辑于 2026-01-16
  • 来自专栏小小码农一个。

    正确使用 equals 方法

    Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 : "SnailClimb".equals(str);// false 不过更推荐使用 java.util.Objects#equals(JDK7 引入的工具类)。 Objects.equals(null,"SnailClimb");// false 我们看一下java.util.Objects#equals的源码就知道原因了。 public static boolean equals(Object a, Object b) { // 可以避免空指针异常。 如果a==null的话此时a.equals(b)就不会得到执行,避免出现空指针异常。 return (a == b) || (a !

    1.3K10发布于 2020-06-08
  • 来自专栏Java阿呆

    hashCode和equals方法

    hashCode和equals方法是Object类中的两个常用方法。 关注点2:推荐按照这样的原则来设计,即 当equals(object)相同时,hashCode()的返回值也要尽量相同,当equals(object)不相同时,hashCode()的返回没有特别的要求, hashCode重写的原则:当equals方法返回true,则两个对象的hashCode必须一样。 equals()方法在get()方法中的使用: ? ? 为什么要同时覆写HashCode()和equals() ? hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相同,即obj1.equals(obj2)=true,则它们的hashCode

    68020发布于 2020-11-04
  • 来自专栏落叶飞翔的蜗牛

    equals()与==的区别?

    equals() : 它的作用也是判断两个对象是否相等,它不能用于比较基本数据类型的变量。equals()方法存在于Object类中,而Object类是所有类的直接或间接父类。 Object类equals()方法: public boolean equals(Object obj) { return (this == obj); } equals() 方法存在两种使用情况 : 情况 1:类没有覆盖 equals()方法。 则通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。使用的默认是 Object类equals()方法。 情况 2:类覆盖了 equals()方法。 () 方法是被重写过的,因为 Object 的 equals() 方法是比较的对象的内存地址,而 String 的 equals() 方法比较的是对象的值。

    1.9K30发布于 2021-01-14
  • 来自专栏日常技术分享

    Java null.equals()

    if (param.getCode().equals(orderDO.getCode())){ return Result.buildFail("xxxx"); } 很明显param的code = null && param.getCode().equals(orderDO.getCode())){ return Result.buildFail("xxxx"); } 但是这样写真的有点戳 Objects.equals(param.getCode(),orderDO.getCode())){ return Result.buildFail("xxxx"); } 如果是比较字符串也可以用 StringUtil.equals()方法

    43230编辑于 2022-06-26
  • 来自专栏藏经阁

    【Java】重写equals方法

    判断实参对象和当前对象地址释放相同,若相同则是同一个对象 判断实参对象是否,当前对象所在类,或子类, 若是则强转,声明比较规则 比较属性是否相同 实现 @Override public boolean equals 判断是否所在类相同 if(obj instanceof Xxx){ //3.强转 Xxx p = (Xxx)obj; //4.比较属性是否相同,基本数据类型用“==”,引用数据类型用equals ()比较 if(this,xxx == p.xx && this,xxx == p.xx.equals(p.xxx) ...){ // 若属性相同,则是同一个对象 return true 或者 //return this,xxx == p.xx && this,xxx == p.xx.equals(p.xxx) ... } }

    1.2K20编辑于 2023-03-04
  • 来自专栏Java核心技术图谱:原理·对比·避坑

    ==与equals 的分析

    方法:按照字典序比较(Unicode编码值大小排序) String类重写了父类的Object中的equals方法,object中equals 默认按照==比较,String重写equals方法后, (testB)); System.out.println(testB.equals(testC)); // equals⽐较:String对象中的逐个字符 //判断引用的是否是同一个对象,放置的内容 (s1.equals(s2)); // true,内容一样 1.3compareTo 方法:按照字典序进行比较 区别在语义: 如果类 没有重写 equals,默认就是比较地址(和 == 效果一样)。 如果类 重写了 equals,通常会比较内容。 与equals 不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。

    14610编辑于 2025-12-22
领券