Java字符串比较的最佳实践

3
为什么要写这段代码?
"name".equals(person.getName());

优于

person.getName().equals("name");

3
"name"永远不会为空。 - zec
2
person.getName() 可能会返回 null,但是忽略一个 null 值是否比抛出异常更好还有争议。 - Peter Lawrey
#2 存在问题:person 和 getName 可能返回 null。至少,您需要为 person 和 getName() 包括一个空值检查(除非您有其他机制保证后者永远不会为 null)。 - kolossus
3个回答

11

我更喜欢使用Yoda表达式"name".equals(person.getName());,因为这意味着您不需要检查person.getName()是否为null。 这样可以节省一些打字时间,而且一旦熟悉了,理解起来也更清晰。

但是在您的情况下,您仍需要检查person是否不为null


1
由于常量"name"永远不可能为null
"name".equals(null)

是有效的并且会返回false,而

String personName = null;
personName.equals("name");

将会抛出一个NullPointerException


1
"name".equals(person.getName());

这段代码将避免空指针异常。


仍需检查“person”是否为空,因为null.getName()会导致NPE。 - ChuckB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接