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

Kev*_*vMo 9 java optimization gwt coding-style

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

"".equals(myString);

myString.equals("");

myString.isEmpty();
Run Code Online (Sandbox Code Playgroud)

有区别吗?

Aar*_*ron 14

"".equals(myString);
Run Code Online (Sandbox Code Playgroud)

不会抛出NullPointerExceptionif myString为null.这就是很多开发人员使用这种形式的原因.

myString.isEmpty();
Run Code Online (Sandbox Code Playgroud)

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

  • 当然,你对".equals(myString)是正确的,但我发现这种有意向后的语法会伤害我的眼睛.我认为,如果您的代码遇到无法确定String值是否为空的情况,那么可能存在基础逻辑问题. (2认同)
  • @Carl我发现括号外的双引号看起来更好.但绝对可以说NPE早期和经常无效. (2认同)

eri*_*son 5

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