其中最好的String技术等于比较

时间:2012-07-28 10:46:01

标签: java

哪个块更好?

private static void checkStr(String str) {

    if (str.equals("exit")) {
        System.out.println("It is equal");
    }
    if ("exit".equals(str)) {
        System.out.println("It is equal");
    }
}

4 个答案:

答案 0 :(得分:8)

使用第一种方法,您可以为NullPointerExceptions提供保证金。所以从我的观点来看,第二个更好。

对于常量的情况,你应该总是选择第二种方法而不是第一种方法。

"exit".equals(str)

您可以找到详细解释here


我个人更喜欢另一种方法。 Apache Commons - commons langObjectUtils.equals(Object, Object)。使用这种方法,即使使用 null 值,您也始终是安全的。

来自documentation

  

比较两个对象是否相等,其中一个或两个对象   可能是空的。

 ObjectUtils.equals(null, null)                  = true
 ObjectUtils.equals(null, "")                    = false
 ObjectUtils.equals("", null)                    = false
 ObjectUtils.equals("", "")                      = true
 ObjectUtils.equals(Boolean.TRUE, null)          = false
 ObjectUtils.equals(Boolean.TRUE, "true")        = false
 ObjectUtils.equals(Boolean.TRUE, Boolean.TRUE)  = true
 ObjectUtils.equals(Boolean.TRUE, Boolean.FALSE) = false

答案 1 :(得分:2)

我认为str.equals("exit")是编写比较的更自然的方式,但如果NullPointerException为空,则会抛出str,而"exit".equals(str)只会评估为false。

您需要知道为什么str可以为null。 null值可能是由程序中其他地方的错误或错误引起的,例如,因此您可能更好地单独检查null而不是忽略它,或者事先确保它不为null。

答案 2 :(得分:1)

我更喜欢:

"exit".equals(str)

只是为了避免NullPointerException

答案 3 :(得分:1)

您将鸭子 NullPointerException案例使用:

"exit".equals(str)