今天是我第一次开始写博客,先从一些简单的东西说起。
对于java中==和equals的区别,是每一个初入行业面试都会考的东西,但这么多年了,你确定你对它们两个的认识是正确的吗?
先看下面这张图对==和equals的区别所做的描述:
是不是和很多人心里想的一样?是不是认为这就是正确答案?
现在我告诉大家,这是错的!尽管我们学习的时候都会获取到这样的信息,尽管我们可能都在面试时回答过这样的答案,但这的确是错的。
确切地说,这两者在Object中是没有任何区别的,两者是等价的。如下图:
有人会问,那为什么我们在做字符串的==或equals时为什么得到得是不同的结果?那是因为String重写了equals方法。大家知道,String的底层实现其实是一个char数组,它重写equals就是把数组中每一个基础类型的char字符拿出来做了比较,如下图:
同理,Integer也对equals做了重写:
现在,明白 == 和equals了吗?