“==”操作符与equals()的故事


前言

大家在写代码的时候经常需要比较两个数据是否相同,有的时候会发现使用“==”即可,但有的时候却发现不行,需要使用equals()方法,那么到底是怎么一回事儿呢,今天就和大家说道说道。


一、==符号

1.1、基本数据类型

当所判断的数据类型为基本数据类型的时候,使用==符号,只要两个变量的数值相等,即为true。例如:

int a = 5;
if(a==6){...}//所以显然5和6是不相等的,所以无法运行

1.2、引用数据类型

当所判断数据类型是引用类型数据时,使用==符号,用来判断符号两边数据是否指向同一个对象,只有指向同一个对象时,才返回true。例如:

Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1==p2);
//输出结果为false,因为两者在堆里指向不同的对象,也即指向不同的地址

这里要强调一点:使用==时,符号两边的数据类型必须兼容,否则编译会出错。

二、equals()方法

1、方法简介

所有的类都继承了Object类,也就获得了equals()方法,当然也可以在每个类中,重写equals()方法。

//格式:
obj1.equals(obj2);

但,对诸如File、String、Date及包装类(Wrapper Class)来说,是比较类型及内容是否相同,而不考虑引用的是否是同一个对象。原因在于:这几个类中都重写了equals()方法。因此,当自定义类使用equals()时,也可以重写equals()方法,达到自己的目标。

2、重写equals()方法

重写原则如下:
重写原则

三、==与equals()方法

1.==既可以比较基本数据类型也可以比较引用数据类型。对于基本数据类型就是比较数值;对于引用数据类型就是比较内存地址。

2.equals()方法,属于Object类的方法,若该方法没有被重写过,与==符号作用相同;而经常使用的String类中的equals()方法,是被重写过的,因此是比较两者的内容。

3 具体要看自定义类里有没有重写Object的equals方法来判断。

4 通常情况下,重写equals方法,会比较类中的相应属性是否都相等。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值