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