在使用equals 的时候,如果没有考虑全面。很容易出现空指针的的情况
举个例子:如下
/**
* @Auther: corey
* @Date: 2020/7/28 09:23
* @Description:
*/
public class equalsUtils {
public static void main(String[] args) {
String str = null;
if (str.equals("qqqq")){
System.out.println("-----");
}else {
System.out.println("-----");
}
}
}
上面运行的程序肯定会报空指针,但是我们如果吧判断的条件修改一下的话,就不会抛出空指针异常,else 语句块得到执行。
不过更推荐使用 java.util.Objects#equals(JDK7 引入的工具类)。
Objects.equals(null,“qqq”);
然后看一下 object 的源码:
这个判断可以避免空指针异常,如果 a==null的话此时a.equals(b)就不会得到执行,避免出现空指针异常。
需要注意的是:
- 每种原始类型都有默认值,如 int 默认值是0,boolean的默认值为 false,null是任何引用类型的默认值,不严格的说是所有 Object 类型的默认值。
- 不可以使用 == 或者 != 来操作比较null值,但是不能使用其他的算法或者逻辑来操作,在Java中null == null将返回true。
- 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常