str.equals(" String")vs" String" .equals(str)

时间:2014-11-24 18:54:14

标签: java string performance

假设strjava.lang.String,使用"String".equals(str) vs str.equals("String")会对性能产生影响吗?我的直觉说:“不,JVM /编译器会在任何一种情况下优化文字字符串”,但我看到第一种风格在各种代码库中出现得足够多,它看起来很不自然(至少对我而言),所以我想在那里必须是除了风格之外的理由。

2 个答案:

答案 0 :(得分:7)

使用"String".equals(str)(我觉得很难看)的唯一原因是懒惰,因为它可以节省您在调用str != null之前检查str.equals("String")的必要性。

在性能方面,应该没有任何区别。您正在以两种方式比较两个String实例。

答案 1 :(得分:0)

"String".equals(str)

不会产生与

相同的结果
str.equals("String")

如果str == null

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

"String".equals(str)

实际上等同于

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