当前位置: 代码迷 >> 综合 >> 《JAVA捡漏系列》之equals方法的正确使用
  详细解决方案

《JAVA捡漏系列》之equals方法的正确使用

热度:11   发布时间:2024-01-30 00:08:20.0

equals方法在日常编程中使用十分广泛,但是在复杂的编程中很容易发生空指针异常,例如下面代码:

String str = null;
if (str.equals("LMRzero")) {...
} else {..
}

上面的程序运行会抛出空指针异常,这是因为字符串没有进行初始化,不能调用其equals方法,我们需要改成如下方式才能运行:

String str = null;
if ("LMRzero".equals(str)) {...
} else {..
}

上面的代码十分简单,其中一个字符串是显式的定义,我们知道其肯定不为空,但是在复杂的程序中我们很难知道字符串是否已经初始化,例如下面方法所示:

public void method(String str1, String str2){if(str1.equals(str2)) {........} else {.........}
}

在这里我们就需要利用到Objects类的equals方法(JDK1.7之后引入)

public void method(String str1, String str2){if(Objects.equals(str1, str2)) {........} else {.........}
}

这样就能有效的避免字符串未初始化造成的空指针异常的问题,我们来看一下该方法的源码:

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

其实该方法本质上就是帮我们进行了一系列判断之后,在调用字符串的equals方法。