在检查空字符串的部分代码中,程序员使用equals()
如下:
if ("".equals(name)) {
// some logic
}
为什么直接从字符串值执行?这有什么区别?
if (name.equals("")) {
// some logic
}
他们两个都有相同的结果,但是做第一个的背后的想法是什么?
答案 0 :(得分:3)
使用背后的想法;
"".equals(name)
是""
不能为null
,而name
可以为。 equals()
接受null
作为参数,但是尝试从null
变量执行方法将导致NullPointerException
。
因此,这是规避此类可能异常的简便方法。对于任何这样的常量对象也是如此。
例如
final Integer CONSTANT_RATE = 123456;
....
if (CONSTANT_RATE.equals(someVariable)) { .. }
而不是这样做;
if (someVariable != null && someVariable.equals(CONSTANT_RATE)) { .. }