可能重复:
Why is myString.equals(“aString”); different from “aString”.equals(myString);?
为什么我在某些java编码中看到"string to compare".equals(input_value)
而不是input_value.equals("string to compare")
?
有什么优点和缺点?
谢谢
答案 0 :(得分:7)
"string to compare".equals(input_value)
避免了空检查的需要。
如果input_value为null,则另一个可能会抛出NPW。事实上,许多IDE都会对此提出警告,并允许您在不进行任何输入的情况下更改代码。
答案 1 :(得分:1)
结果不应该不同。
但技术上他们可能会。
在第一种情况下,将从String类调用equals()和hashCode()方法。
在第二种情况下,将从input_value类调用equals()和hashCode()方法。
此外,如果input_value为null,则在第一种情况下结果将始终为false,而在第二种情况下,您将获得NullPointerException。
没有足够的信息来说明哪一个是优先的。这取决于你的目的。
在第一种情况下,你要避免NullPointerException。
在第二种情况下,您可以(如果为input_value定义类)可以更好地控制如何定义对象的相等性(equals()和hashCode()方法)