equals()和==的区别

本文详细解析了Java中equals方法与==运算符在不同数据类型(基本类型与引用类型)下的使用区别。通过实例说明两者如何判断对象的相等性,并解释了为什么某些情况下它们的比较结果不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

equals()和==是Java里面用于比较时都相等的两个常用的方式,但是用法有差别,比较内容的时候就要由数据类型分类讨论了.

(1)基本数据类型:

        先说一下八种基本数据类型吧,byte,short,int,long,char,boolean,float,double.

        当比较的数据类型是基本数据类型的时候,是不可以调用equals()方法的,会报错;

        而==则是比较他们的值是否相同.

        如图所示:


(2)复合数据类型(引用类型):

        当比较的数据类型是引用类型的时候,==比较的就是他们存放的的地址,所以说引用类型只有想比较两个比较对象是不是同一个对象是才会用到==,换句话说,除非是同一个new出来的对象,比较结果会为true,其余结果都为false;

        Java中所有的类都是继承于Object基类的,equals方法是在Object里面定义的一个方法,这个方法的初始作用是比较存放地址,但是许多类库中这个方法被重写了.比如说String,Date,Integer等类中equals都有自己的实现,不再仅仅比较存放地址了.而在一些没有重写equals方法的类中equals()还是用来比较存地址的,等价于==,因为源码中也是调用了==.Object中的equals源码如下所示:


以上就是equals()和==的区别.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值