我需要检查null和""比较Java中的String?

时间:2017-01-06 12:26:57

标签: java string

假设我必须比较两个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并空白?

有没有第一次比较失败的情况?哪种方法更好?

2 个答案:

答案 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