我想比较两个字符串是否相等,当其中一个或两个都可以为空时。
因此,我不能简单地调用.equals(),因为它可以包含空值。
到目前为止,我尝试过的代码:
boolean compare(String str1, String str2) {
return ((str1 == str2) || (str1 != null && str1.equals(str2)));
}
检查包括空值在内的所有可能值的最佳方法是什么?
我想比较两个字符串是否相等,当其中一个或两个都可以为空时。
因此,我不能简单地调用.equals(),因为它可以包含空值。
到目前为止,我尝试过的代码:
boolean compare(String str1, String str2) {
return ((str1 == str2) || (str1 != null && str1.equals(str2)));
}
检查包括空值在内的所有可能值的最佳方法是什么?
当前回答
boolean compare(String str1, String str2) {
return (str1==null || str2==null) ? str1 == str2 : str1.equals(str2);
}
其他回答
boolean compare(String str1, String str2) {
if (str1 == null || str2 == null)
return str1 == str2;
return str1.equals(str2);
}
boolean compare(String str1, String str2) {
return (str1==null || str2==null) ? str1 == str2 : str1.equals(str2);
}
使用Apache Commons StringUtils类的equals(-,-)和equalsIgnoreCase(-,-)方法比较两个字符串。
stringutil的。等于(-,-):
StringUtils.equals(null, null) = true
StringUtils.equals(null, "abc") = false
StringUtils.equals("abc", null) = false
StringUtils.equals("abc", "abc") = true
StringUtils.equals("abc", "ABC") = false
stringutil的。equalsIgnoreCase(-, -):
StringUtils.equalsIgnoreCase(null, null) = true
StringUtils.equalsIgnoreCase(null, "abc") = false
StringUtils.equalsIgnoreCase("xyz", null) = false
StringUtils.equalsIgnoreCase("xyz", "xyz") = true
StringUtils.equalsIgnoreCase("xyz", "XYZ") = true
boolean compare(String str1, String str2) {
if(str1==null || str2==null) {
//return false; if you assume null not equal to null
return str1==str2;
}
return str1.equals(str2);
}
这是你想要的吗?
这是Java内部代码使用的(在其他比较方法上):
public static boolean compare(String str1, String str2) {
return (str1 == null ? str2 == null : str1.equals(str2));
}