为什么顺序在equals()中相反

时间:2019-07-31 04:39:11

标签: java syntax

在检查空字符串的部分代码中,程序员使用equals()如下:

if ("".equals(name)) {
    // some logic
}

为什么直接从字符串值执行?这有什么区别?

if (name.equals("")) {
    // some logic
}

他们两个都有相同的结果,但是做第一个的背后的想法是什么?

1 个答案:

答案 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)) { .. }