如果块更好?其中字符串的最好最好的技术等于比较
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");
}
}
如果块更好?其中字符串的最好最好的技术等于比较
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");
}
}
第一种方法是给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
是的第二个更可读 – Pooya 2012-07-28 10:50:45
可以肯定的是,如果你想允许空值,这是唯一的。在许多情况下,您希望尽快抛出空值,因为它们代表了您想要修复的错误。 – 2012-07-28 14:14:42
谢谢。你用很好的方式描述了解决方案。 – 2012-07-31 04:39:15
我喜欢:
"exit".equals(str)
,只是为了避免NullPointerException
。
你会鸭NullPointerException
情况下使用:
"exit".equals(str)
我觉得str.equals("exit")
是写的比较更自然的方式,但会抛出一个NullPointerException
如果str
是空的,而"exit".equals(str)
只会评估为假。
您需要知道为什么str
可以为null。空值可能是由程序中其他地方的错误或错误引起的,例如,您可能会更好地单独检查null
而不是忽略它,或者确保它不是空的。
如果你为开发做这件事,我会建议使用ApacheCommon更好的优雅 – 2012-07-28 10:48:34