2021-07-06

为什么判断对象是否相等, 不建议用 equals ?

这片文章中会总结一下与a.equals(b)的区别,然后对源码做一个小分析。

一,值是null的情况:

1.a.equals(b), a 是null, 抛出NullPointException异常。

2.a.equals(b), a不是null, b是null, 返回false

3.Objects.equals(a, b)比较时, 若a 和 b 都是null, 则返回 true, 如果a 和 b 其中一个是null, 另一个不是null, 则返回false。注意:不会抛出空指针异常。

null.equals("abc") → 抛出 NullPointerException 异常"abc".equals(null) → 返回 falsenull.equals(null)  → 抛出 NullPointerException 异常
Objects.equals(null, "abc") → 返回 falseObjects.equals("abc",null)  → 返回 falseObjects.equals(null, null)  → 返回 true

二,值是空字符串的情况:

1.a 和 b 如果都是空值字符串:"", 则 a.equals(b), 返回的值是true, 如果a和b其中有一个不是空值字符串,则返回false;

2.这种情况下 Objects.equals 与情况1 行为一致。

"abc".equals("") → 返回 false"".equals("abc") → 返回 false"".equals("")  → 返回 true
Objects.equals("abc", "") → 返回 falseObjects.equals("","abc")  → 返回 falseObjects.equals("","")  → 返回 true

三,源码分析

1.源码

//java框架 www.fhadmin.cnpublic final class Objects { private Objects() {  throw new AssertionError("No java.util.Objects instances for you!"); }  /**  * Returns {@code true} if the arguments are equal to each other  * and {@code false} otherwise.  * Consequently, if both arguments are {@code null}, {@code true}  * is returned and if exactly one argument is {@code null}, {@code  * false} is returned. Otherwise, equality is determined by using  * the {@link Object#equals equals} method of the first  * argument.  *  * @param a an object  * @param b an object to be compared with {@code a} for equality  * @return {@code true} if the arguments are equal to each other  * and {@code false} otherwise......

原文转载:http://www.shaoqun.com/a/849239.html

跨境电商:https://www.ikjzd.com/

parser:https://www.ikjzd.com/w/680

打折网站:https://www.ikjzd.com/w/74

DMM:https://www.ikjzd.com/w/2026


这片文章中会总结一下与a.equals(b)的区别,然后对源码做一个小分析。一,值是null的情况:1.a.equals(b),a是null,抛出NullPointException异常。2.a.equals(b),a不是null,b是null,返回false3.Objects.equals(a,b)比较时,若a和b都是null,则返回true,如果a和b其中一个是null,另一个不是null,则
xinong:https://www.ikjzd.com/w/1368
bestbuy:https://www.ikjzd.com/w/394
全行业抗议:中美贸易战把成本转嫁给当地消费者!:https://www.ikjzd.com/articles/91480
了解离岸公司定义及优势,让企业更好的发展对外贸易!:https://www.ikjzd.com/articles/91482
商务部权威发布:跨境电商零售进口额同比增长超40%!:https://www.ikjzd.com/articles/91483
收藏:关于亚马逊禁售和限制性销售商品的相关信息汇总!:https://www.ikjzd.com/articles/91484
男友不让我公车穿内裤 地铁被陌生人做到高潮:http://www.30bags.com/m/a/249833.html
女的下面张开照片 喜欢让人㖭我下面:http://www.30bags.com/m/a/249740.html
男人眼中的好女人十大标准:http://lady.shaoqun.com/a/403792.html
我对前夫不满意,再婚的老公不如前夫。六个女人的采访让我看到了很多:http://lady.shaoqun.com/a/403793.html
第二个已婚女人告诉你:再婚的老公会比前夫好吗?两者的答案非常一致:http://lady.shaoqun.com/a/403794.html
ebay不出单怎么办:https://www.ikjzd.com/articles/146355

No comments:

Post a Comment