equals()与“==”的区别?

你真的知道equals()与==的区别吗?

一、“==”

1、使用范围:基本数据类型和引用数据类型
2、比较两个基本数据类型:比较的是数据是否相同

int a = 5;
float b = 5.0F;
char c = '5';
double d = 5.00;
System.out.println(a == b);//true
System.out.println(a == c);//false
System.out.println(a == d);//true

3、比较两个引用数据类型:比较的是两个引用的地址是否相同

String s1 = new String("hello");
String s2 = new String("hello");
String s3 = "hello";
String s4 = "hello";
System.out.println(s1 == s2);//false
System.out.println(s3 == s4);//true
System.out.println(s1 == s3);//false

至于s3 == s4为什么为true,这就不做过多解释了。

二、equals()

1、只能适用于引用数据类型
2、equals()是一个方法,而不是运算符
3、object中的equals()的定义:

public boolean equals(Object obj) {
    return (this == obj);
}

注意:由Object类中定义的equals()方法可知:在Object中equals()和==的作用是相同的,都用于比较两个对象的地址值是否相同。
当同一个类创建的两个对象具有相同的属性值时,若此对象未重写Object中的equals()方法,此时比较的是两个对象的地址,因此对象不相等。

三、一些常用的重写了equals()的类:Date、Point、String、File、包装类

重写了0bject类中的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(null),永远返回是“false”;x.equals(和lx不同类型的对象)永远返回是“false”。

通常情况下,自定义的类如果使用equals()的话,也通常是比较两个对象的"实体内容"是否相同。那么,就需要对Object类中的equals( )进行重写。
重写的原则:比较两个对象的实体内容是否相同.

针对文章可能存在的一些不足之处,请大佬指出,经核实以后会尽快对文章进行修改,感谢您的支持!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值