2

可能重复:
为什么 myString.equals(“aString”); 不同于“aString”.equals(myString);?

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

优缺点都有什么?

谢谢

4

2 回答 2

7

"string to compare".equals(input_value) 避免了空检查的需要。

如果 input_value 为空,另一个可能会抛出 NPW。事实上,许多 IDE 都会警告您这一点,并允许您在不输入任何内容的情况下更改代码。

于 2013-01-18T03:39:44.383 回答
1

结果不应该不同。

但从技术上讲,他们可能会。

在第一种情况下,将从 String 类调用 equals() 和 hashCode() 方法。

在第二种情况下,将从 input_value 类调用 equals() 和 hashCode() 方法。

此外,如果 input_value 为 null,则在第一种情况下,结果将始终为 false,而在第二种情况下,您将获得 NullPointerException。


没有足够的信息来说明首选哪一个。这取决于你的目的。

在第一种情况下,您避免 NullPointerException。

在第二种情况下,您可能(如果您为 input_value 定义类)可以更好地控制如何定义对象的相等性(equals() 和 hashCode() 方法)

于 2013-01-18T03:42:53.370 回答