假设我必须比较两个String
s:
public String checkComaprision(String str) {
if (!("Hello".equals(str))) {
System.out.println("String didn't match to hello");
}
if ("".equals(str) || null == str || (!str.equals("Hello"))) {
System.out.println("String didn't match to hello");
}
}
这里我使用了两种字符串比较内部字符串的方法。在实际比较之前,我已经在许多地方阅读过,我们将字符串与""
和null
进行比较。但我认为第一种情况会正常,如果是的话,那我为什么要检查null
并空白?
有没有第一次比较失败的情况?哪种方法更好?
答案 0 :(得分:8)
"Hello".equals(str))
无法失败,字符串文字永远不会是null
。与"".equals(str)
相同。
方法Objects.equals(Object, Object)
首先自动检查空值。
要回答您的问题,使用if ("Hello".equals(str))
就可以了,但如果您想要用变量替换字符串文字"Hello"
,则应使用Objects.equals(greeting, str)
。
检查空字符串是绝对没有必要的。
答案 1 :(得分:2)
在你的情况下,冷杉比较将始终有效,因为我们确信“你好”永远不会为空。现在,如果你想要一个像这样的变量
private String s
然后你想要通过像你这样的函数与另一个函数进行比较,你现在需要确保s与null不同
取值!= NULL
如果没有,您可能会有NullPointerException