Java String Comparison:样式选择还是优化?

时间:2010-07-13 21:20:00

标签: java optimization gwt coding-style

我一直在研究一些由不同的人编写的GWT代码,并且有不同的方法来比较字符串。我很好奇这是否只是一种风格选择,或者如果一种比另一种更优化:

"".equals(myString);

myString.equals("");

myString.isEmpty();

有区别吗?

5 个答案:

答案 0 :(得分:14)

"".equals(myString);
如果NullPointerException为空,

将不会抛出myString。这就是许多开发人员使用这种形式的原因。

myString.isEmpty();
如果myString永远不为空,

是最好的方法,因为它解释了发生了什么。编译器可以对此进行优化或myString.equals(""),因此它更像是一种样式选择。 isEmpty()显示您的意图优于equals(""),因此通常首选。

答案 1 :(得分:5)

请注意,在Java 6中添加了isEmpty(),不幸的是,如果您不支持Java 1.4,仍然会有人大声抱怨。

答案 2 :(得分:2)

apache StringUtils为String操作提供了一些方便的方法。

http://commons.apache.org/lang/api/org/apache/commons/lang/StringUtils.html#isBlank(java.lang.CharSequence)

查看该方法及相关方法。

答案 3 :(得分:0)

如果您正在使用最新版本的Java(1.6),那么

myString.isEmpty()可能是最好的。它可能比myString.equals(“”)表现更好,因为它只需要检查一个字符串。

“”。equals(myString)具有如果myString为null则不抛出空指针异常的属性。然而,仅仅因为这个原因,我会避免它,因为如果遇到意外情况通常会更快失败。否则将来很难找到一些小错误......

myString.equals(“”)是那些希望保持与旧Java版本兼容的人最自然/惯用的方法,或者只是想要明确他们所比较的内容。

答案 4 :(得分:-3)

使用“”的两个选项可能都需要创建一个临时的String对象,但不应该使用.isEmpty()函数。

如果他们打算放入.isEmpty()函数,我说最好用它!