说说JAVA中的==和equals

今天是我第一次开始写博客,先从一些简单的东西说起。

对于java中==和equals的区别,是每一个初入行业面试都会考的东西,但这么多年了,你确定你对它们两个的认识是正确的吗?

先看下面这张图对==和equals的区别所做的描述:
来自头条的以为作者的文章
是不是和很多人心里想的一样?是不是认为这就是正确答案?

现在我告诉大家,这是错的!尽管我们学习的时候都会获取到这样的信息,尽管我们可能都在面试时回答过这样的答案,但这的确是错的。
确切地说,这两者在Object中是没有任何区别的,两者是等价的。如下图:
Object类中的equals直接返回两者==的结果
有人会问,那为什么我们在做字符串的==或equals时为什么得到得是不同的结果?那是因为String重写了equals方法。大家知道,String的底层实现其实是一个char数组,它重写equals就是把数组中每一个基础类型的char字符拿出来做了比较,如下图:
在这里插入图片描述
同理,Integer也对equals做了重写:
在这里插入图片描述
现在,明白 == 和equals了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值