为什么是myString.equals("aString"); 不同于"aString".equals(myString);?

Mar*_*ace 7 java string equals

我听过几次使用boolean equals(Object o)比较时Strings,最好将常量放在函数的左侧,如下所示:

  • 不好:myString.equals("aString");
  • 好:"aString".equals(myString);

为什么是这样?

cor*_*iKa 8

因为如果myString为null,则会出现异常.你知道"aString"永远不会是null,所以你可以避免这个问题.

通常你会看到nullSafeEquals(myString,"aString");在任何地方使用的库都可以完全避免(因为大多数时候你比较对象,它们不是由编译器生成的!)