哪个块更好?
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");
}
}
答案 0 :(得分:8)
使用第一种方法,您可以为NullPointerExceptions
提供保证金。所以从我的观点来看,第二个更好。
对于常量的情况,你应该总是选择第二种方法而不是第一种方法。
"exit".equals(str)
您可以找到详细解释here
我个人更喜欢另一种方法。 Apache Commons - commons lang有ObjectUtils.equals(Object, Object)
。使用这种方法,即使使用 null 值,您也始终是安全的。
比较两个对象是否相等,其中一个或两个对象 可能是空的。
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)