点赞再看,养成好习惯
哈喽,大家好,我是一条。
今天也是向高级程序员学习的一天。组长又说了我用a.equals(b)判断对象相等的问题,一开始我还很奇怪,不都这么用吗
组长:“……”
嗷嗷,原来是这样,那该用什么呢?
组长:“……”
别急,这就把组长讲的教给大家。
"a.equals(b)"和"a==b"
a.equals(b)是jdk1.7的方法。面试常考的是和“==”的区别:
如果 a 和 b 都是对象,则 a==b 是比较两个对象的引用,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true。
而 a.equals(b) 是进行逻辑比较,当内容相同时,返回true,所以通常需要重写该方法来提供逻辑一致性的比较。
但到了实际开发,情况就复杂的多了,比如Null和空字符串的区别
1.值是Null
1.a.equals(b), a 是null, 抛出NullPointException异常。
2.a.equals(b), a不是null, b是null, 返回false。不会抛出空指针异常。
3.Object.equals(a,b)比较时, 若a 和 b 都是null, 则返回 t