当检查两个Java String
是否相等时,我看到了以下两种写法:
// Method A
String string1;
// ...
if("MyString".equals(string1)) {
// ...
}
并且
// Method B
String string1;
// ...
if(string1.equals("MyString")) {
// ...
}
我的问题是:哪个更好,更广泛使用?
当检查两个Java String
是否相等时,我看到了以下两种写法:
// Method A
String string1;
// ...
if("MyString".equals(string1)) {
// ...
}
并且
// Method B
String string1;
// ...
if(string1.equals("MyString")) {
// ...
}
如果您确定string1永远不会为null,那么选项2易读且更受欢迎。否则,请选择选项1。选项1的目的是避免潜在的空指针错误。
null
引用,但您的代码可能会在意想不到的方式中使用,因此最好进行防御性编码。(顺便说一句,如果您想知道,我没有给您投反对票)。 - Neil Bartlett方法B在string1为空时会抛出NullPointerException,而方法A永远不会抛出此异常。一些权威机构强制要求进行这种“防御性”编程。他们影响了我去做它,尽管这仍然不是自然而然的!
也可以写成:
if (string1 != null && string1.equals("MyString")) ...
方法A不会抛出空指针异常。这两种方法没有更好的选择。它取决于你是否希望它抛出npe(在整体设计中可能需要)。
方法a不会抛出NullPointerException
,因此非常方便。它也被广泛使用。
异常处理是用于特殊情况的处理,与检查错误条件并使用常规逻辑处理它们相比,具有更多的开销。如果您已经编程十年,NPE(空指针异常)通常表示代码不够谨慎,这会让人感到不安。通过使用"constant".equals(variable)来避免它们,这样阅读和使用您的代码的人会更加愉快。
if (1 == x)
但没有具体的原因。 但是出于不同的原因。(正如其他人所指出的那样,空指针)。
null
,选项1可能更好。 - AniDev