问题
我想在Java中比较两个字符串的相等性,当其中一个或两个都可以是null
时,所以我不能简单地调用.equals()
。什么是最好的方法?
boolean compare(String str1, String str2) {
...
}
编辑:
return ((str1 == str2) || (str1 != null && str1.equals(str2)));
#1 热门回答(163 赞)
从Java 7开始,你可以使用静态方法Objects.equals(Object, Object)
对两个对象执行等于检查而不关心它们是null
。
如果两个对象都是null
将返回true
,如果一个是null
而另一个不是它将返回false
。否则它将返回第二个作为参数的第一个对象调用equals
的结果。
#2 热门回答(133 赞)
这是Java内部代码使用的(在其他compare
方法上):
public static boolean compare(String str1, String str2) {
return (str1 == null ? str2 == null : str1.equals(str2));
}
#3 热门回答(32 赞)
对于这些情况,最好使用Apache CommonsStringUtils#equals,它已经处理空字符串。代码示例:
public boolean compare(String s1, String s2) {
return StringUtils.equals(s1, s2);
}
如果你不想添加库,只需复制StringUtils#equals
方法的source code并在需要时应用它。