3.equals()和==的区别

本文详细解析了Java中==操作符与equals方法的区别,以及hashCode方法的重要性。通过实例展示了不同情况下这些方法的行为差异,并强调了在自定义类中正确实现equals和hashCode方法对于集合类使用的必要性。
摘要由CSDN通过智能技术生成
  • ==用于判断两边的变量的值是否相等,如果是基本数据类型,就是判断他们的值是不是相等;如果==两边是对象的引用,那么指的是这两个引用是否指向同一个对象,及引用的值是否相等。
  • equals()是Object里的方法。在Object的equals中,就是使用==来进行比较,比较的是引用。与==不同的是,在某些Object的子类中,覆盖了equals()方法,比如String中的equals()方法比较两个字符串对象的内容是否相同。
  • hashCode()方法也是继承自Object,它用来获取一个对象的hash值,返回int值。Object.hashCode规定,equals()相等的对象,它们的HashCode()返回值也必须相等,否则无法与集合类结合在一起使用。(List,
    Set, Hashmap..)
        // 其他引用类型 equals与 == 的比较
        User user1 = new User("shan","23");
        User user2 = new User("shan","23");
        User user3 = user1;
        System.out.println(user1.equals(user2)); //输出false
        System.out.println(user1.equals(user3)); //输出true
        System.out.println(user1==user2); //输出false
        System.out.println(user2==user3); //输出false
        // String 类型 equals与 == 的比较
        String a = new String("shan");
        String b=a;
        String c = new String("shan");
        System.out.println(a.equals(b));  //输出true
        System.out.println(a.equals(c));  //输出true
        System.out.println(a==b); //输出true
        System.out.println(a==c); //输出false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值