方法之一.
if (graphType.equals("All") || graphType.equals("ALL"))
Run Code Online (Sandbox Code Playgroud)
四个人.
if ("All".equals(graphType) || "ALL".equals(graphType))
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别?为什么下面的一个更好?
Rom*_*las 10
第二个更好,就像graphType是null,第一个代码片段将抛出一个NullPointerException.
请注意,您可以使用简化代码"ALL".equalsIgnoreCase(graphType)(如果您接受诸如AlL或aLL......之类的值)
编辑您的评论:
如果graphType是null,在第一种情况下,你会得到一个NullPointerException.在第二种情况下,所述的评价equals方法将是false,作为"someString".equals(null);总是返回false:
这是String.equals(String)方法的代码:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
(来源)
有趣的是if (anObject instanceof String) {.在对象instanceof上调用语句时null,此测试始终返回false.这就是为什么"anyString".equals(null);会回归false.