java中“string”.equals(value)或value.equals(“string”)之间的区别?

时间:2013-01-18 03:38:37

标签: java string equals

  

可能重复:
  Why is myString.equals(“aString”); different from “aString”.equals(myString);?

为什么我在某些java编码中看到"string to compare".equals(input_value)而不是input_value.equals("string to compare")

有什么优点和缺点?

谢谢

2 个答案:

答案 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()方法)