正确使用 equals() 方法
Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。
举个例子:
1 | // 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常 |
运行上面的程序会抛出空指针异常,但是我们把第二行的条件判断语句改为下面这样的话,就不会抛出空指针异常,else 语句块得到执行。:
1 | "SnailClimb".equals(str);// false |
解释 :
equals 产生空指针的原因就是,值为 null 的引用变量去调用非静态方法。
JDK 1.7 引入了 java.util.Objects 工具类,我们可以调用它的 equals() 方法。
1 | Objects.equals(null,"SnailClimb");// false |
我们看一下 Objects 的 equals 的源码:
1 | public static boolean equals(Object a, Object b) { |
归根结底就是不让 null 来调用方法