java - 为什么 equals() 中的顺序相反

标签 java syntax

在检查空字符串的代码中,程序员使用 equals()像这样:

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

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

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

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

最佳答案

使用背后的想法;

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

关于java - 为什么 equals() 中的顺序相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57283277/

相关文章:

java - 在从 JTextArea 获取文本的文档中保存文件时如何修复新行

java - 使用 FXML 在 JavaFX 中循环/foreach

r - R中函数的语法?

javascript - 为 JavaScript 函数参数转义 PHP 中的引号

python - 尝试设置小数位数时语法无效

使用 fig=plt 的 Python 语法错误

c - 代码无法编译

java - 有必要为java设置路径吗?

java - 从 JavaFX 应用程序复制图像并使用 Windows 粘贴

java - 我们可以计算 Spring bean 初始化时间吗