目录
  1. 1. 正确使用 equals() 方法
正确使用 equals() 方法

正确使用 equals() 方法

Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。

举个例子:

1
2
3
4
5
6
7
// 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常
String str = null;
if (str.equals("SnailClimb")) {
...
} else {
..
}

运行上面的程序会抛出空指针异常,但是我们把第二行的条件判断语句改为下面这样的话,就不会抛出空指针异常,else 语句块得到执行。:

1
"SnailClimb".equals(str);// false

解释 :

​ equals 产生空指针的原因就是,值为 null 的引用变量去调用非静态方法。

JDK 1.7 引入了 java.util.Objects 工具类,我们可以调用它的 equals() 方法。

1
Objects.equals(null,"SnailClimb");// false

我们看一下 Objects 的 equals 的源码:

1
2
3
4
public static boolean equals(Object a, Object b) {
//可以避免空指针异常。如果a==null的话此时a.equals(b)就不会得到执行,避免出现空指针异常。
return (a == b) || (a != null && a.equals(b));
}

归根结底就是不让 null 来调用方法

文章作者: Archiver
文章链接: https://www.kaiming66.com/2019/12/06/Java/%E6%AD%A3%E7%A1%AE%E4%BD%BF%E7%94%A8%20equals()%20%E6%96%B9%E6%B3%95/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Archiver`s Blog
打赏
  • 微信
  • 支付寶

评论