str.equals("String")与"String".equals(str)的区别

4
假设strjava.lang.String类型,那么使用"String".equals(str)str.equals("String")是否会影响性能?我个人认为,“不会”,因为JVM/编译器会针对任何一种情况来优化字面字符串。但是我在各种代码库中经常看到第一种方式,而且它看起来非常不自然(至少对我来说),所以我认为除了风格之外一定还有其他原因。
2个回答

7

使用"String".equals(str)的唯一原因(我认为这个写法不够美观)是懒惰,因为它免去了在调用str.equals("String")之前检查str!= null的步骤。

就性能而言,两种写法没有任何区别。你都是比较两个String实例。


0
"String".equals(str)

不会产生相同的结果

str.equals("String")

如果 str == null

在第一种情况下,它返回false,在第二种情况下,它会抛出一个NullPointerException异常。

"String".equals(str)

实际上等同于

str != null && str.equals("String")

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