我一直在研究一些由不同的人编写的GWT代码,并且有不同的方法来比较字符串。我很好奇这是否只是一种风格选择,或者如果一种比另一种更优化:
"".equals(myString);
myString.equals("");
myString.isEmpty();
有区别吗?
答案 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操作提供了一些方便的方法。
查看该方法及相关方法。
答案 3 :(得分:0)
myString.isEmpty()可能是最好的。它可能比myString.equals(“”)表现更好,因为它只需要检查一个字符串。
“”。equals(myString)具有如果myString为null则不抛出空指针异常的属性。然而,仅仅因为这个原因,我会避免它,因为如果遇到意外情况通常会更快失败。否则将来很难找到一些小错误......
myString.equals(“”)是那些希望保持与旧Java版本兼容的人最自然/惯用的方法,或者只是想要明确他们所比较的内容。
答案 4 :(得分:-3)
使用“”的两个选项可能都需要创建一个临时的String对象,但不应该使用.isEmpty()函数。
如果他们打算放入.isEmpty()函数,我说最好用它!