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