我是否需要检查null和"&引用;在Java中比较字符串时?
假设我必须比较两个我是否需要检查null和"&引用;在Java中比较字符串时?,java,string,Java,String,假设我必须比较两个Strings: 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.
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
和blank
是否存在第一次比较失败的情况?哪一种方法更好?没有办法
“Hello.equals(str))
会失败,字符串文本永远不能为null
。与”相同。等于(str)
方法Objects.equals(Object,Object)
首先自动检查空值
要回答您的问题,使用
if(“Hello”.equals(str))
很好,但是如果您想用变量替换字符串文字“Hello”
,您应该使用Objects.equals(greeting,str)
检查空字符串是绝对不必要的。在您的情况下,第一个比较总是有效的,因为我们确信“hello”永远不会为空。现在如果你想要一个这样的变量 私有字符串 然后,您想通过像您这样的函数与另一个进行比较,现在需要确保s不同于null s=空的
如果没有,您可能会有一个NullPointerException答案是:没有yoda符号用于删除
null
检查。如果您要编写str.equals(“Hello”),则必须首先检查str是否为null。但是“Hello”.equals(str)不需要事先检查。-我会用这个。没有额外的括号。我打算建议StringUtils.equals(str1,str2)
,但我不知道对象。equals(str1,str2)
,谢谢