操作符 == 与 equals 方法

本文介绍了Java中操作符`==`和`equals()`方法的区别与用法。操作符`==`用于基本类型时比较值,对于引用类型则比较对象的引用。而`equals()`方法默认行为与`==`相似,但某些类如String、Date等重写了该方法以比较内容。若要自定义比较逻辑,需重写equals()。
摘要由CSDN通过智能技术生成

操作符 == 与 equals 方法

操作符 ==

  • 基本类型比较值:只要两个比变量的值相等,即为 true

    int a = 5;
    System.out.println(a == 5); //true
    System.out.println(a == 6); //false
    
  • 引用类型比较引用(是否指向同一个对象):只有指向同一个对象的时候,才会返回 true。

    Person p1 = new Person();
    Person p2 = new Person();
    System.out.println(p1 == p2); //false
    //-------------------------------------------
    p1 = p2;
    System.out.println(p1 == p2); //true
    
  • 使用操作符 == 进行比较时,符号两边的数据类型必须兼容(可以自动转换的基本数据类型除外),否则编译出错。

equals() 方法

所有类都继承了 Object,也就获得了 equals() 方法,同时也可以重写 equals() 方法。

  • 只能比较引用类型,起作用与操作符 == 相同,都是比较是否指向同一个对象,也就是对象的内存地址。( obj1.equals(obj2) )

  • 特殊情况:当用 equals() 方法进行比较时,对类 File、String、Date及包装类(Wrapper Class)来说,是比较类型及内容而不用考虑引用的是否同一个对象。因为这些类中重写了 Object 类的 equals() 方法。

    String s1 = "zhangsan";
    String s2 = "zhangsan";
    System.out.println(s1 == s2); // false
    System.out.println(s1.equals(s2)); // true
    //当用 equals() 方法进行比较时,对类 File、String、Date及包装类(Wrapper Class)来说,是比较类型及内容而不用考虑引用的是否同一个对象。
    
  • 如果想改变某一个类的 equals() 方法,不想用 equals 来比较对象的内存地址,那就重写 equals() 方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值