Jan*_*icz 4 java string equals object
通过替换以下内容,我是否会丢失任何东西:
public final boolean testEquals(String left, String right) {
if ((left == null && right != null) || (left != null && right == null)) {
return false;
} else if (left == null && right == null) {
return true;
} else {
return left.equalsIgnoreCase(right);
}
}
Run Code Online (Sandbox Code Playgroud)
使用JDK 7 Objects类中的代码:
public final boolean testEquals(String left, String right) {
return Objects.equals(left,right);
}
Run Code Online (Sandbox Code Playgroud)
如果我对大小写不敏感,请替换为
Objects.equals(left.toLowerCase(),right.toLowerCase());
Run Code Online (Sandbox Code Playgroud)
足够?这有意义吗?
如果您不仅限于JDK,还可以使用
StringUtils.equalsIgnoreCase(CharSequence str1, CharSequence str2)
来自apache-commons lang,它是null安全的,将返回
StringUtils.equalsIgnoreCase(null, null) = true
StringUtils.equalsIgnoreCase(null, "abc") = false
StringUtils.equalsIgnoreCase("abc", null) = false
StringUtils.equalsIgnoreCase("abc", "abc") = true
StringUtils.equalsIgnoreCase("abc", "ABC") = true
Run Code Online (Sandbox Code Playgroud)
“不幸的String.equalsIgnoreCase(String)是”该方法有点复杂。您可以查看代码,但javadoc 本身对此进行了很好的解释:
将此字符串与另一个字符串进行比较,忽略大小写。如果两个字符串长度相同,并且两个字符串中对应的字符忽略大小写相等,则认为两个字符串相等,忽略大小写。
如果以下至少一项为真,则两个字符 c1 和 c2 被视为相同,忽略大小写:
- 两个字符相同(通过 == 运算符进行比较)
- 将方法 Character.toUpperCase(char) 应用于每个字符会产生相同的结果
- 将方法 Character.toLowerCase(char) 应用于每个字符会产生相同的结果
| 归档时间: |
|
| 查看次数: |
2428 次 |
| 最近记录: |