gpt4 book ai didi

java - 在 if 或 else if 中使用 OR 运算符?

转载 作者:行者123 更新时间:2023-12-01 06:38:17 24 4
gpt4 key购买 nike

早上好/下午好/晚上好,

我正在编写一个简单的函数,如果作为参数给出的字符串(在本例中是两个字符代码)匹配,它将返回一个 boolean 值。

我想知道哪一种被认为是解决此问题的“最佳”方法,是否会使用多个 ||单个 if 中的运算符如下所示:

private boolean isCodeSpecial(String code){
if( code.equalsIgnoreCase("AA") ||
code.equalsIgnoreCase("AB") ||
code.equalsIgnoreCase("SS") ||
code.equalsIgnoreCase("DD") ||
code.equalsIgnoreCase("YY") ||
code.equalsIgnoreCase("ZZ") ||
code.equalsIgnoreCase("AX") ){
return true;
}
return false;
}

或者可能使用一系列 else if 语句,如下所示:

private boolean isCodeSpecial(String code){
if(code.equalsIgnoreCase("AA")){
return true;
}else if(code.equalsIgnoreCase("AB")){
return true;
}else if(code.equalsIgnoreCase("SS")){
return true;
}else if(code.equalsIgnoreCase("DD")){
return true;
}else if(code.equalsIgnoreCase("YY")){
return true;
}else if(code.equalsIgnoreCase("ZZ")){
return true;
}else if(code.equalsIgnoreCase("AX")){
return true;
}else{
return false;
}
}

我并不真正关心这个应用程序的性能,因为我知道任何 yield /损失都可能很小并且几乎不明显 - 但如果可能的话,我想知道什么是通常被认为是最佳实践以供将来引用。我想可以说这正是 else if 的用途?

提前致谢,

编辑:忘记提及我正在使用 Java 1.6(所以我不相信在不使用枚举的情况下可以进行简单的切换?)

最佳答案

为什么要使用 if 语句?

return code.equalsIgnoreCase("AA") ||
code.equalsIgnoreCase("AB") ||
code.equalsIgnoreCase("SS") ||
code.equalsIgnoreCase("DD") ||
code.equalsIgnoreCase("YY") ||
code.equalsIgnoreCase("ZZ") ||
code.equalsIgnoreCase("AX");

如果您真的想要if语句,那么我肯定会选择第一种方法。由于短路,它将执行与 if/else/if/else 代码完全相同的比较次数 - 如果 || 运算符的第一个操作数计算结果为 true,那么第二个操作数将不会被计算...但它很多更清晰。

另一种选择是创建一个固定的不区分大小写的集,这样你就可以说:

return VALID_CODES.contains(code);

您可以使用TreeSet来做到这一点:

private static final Set<String> VALID_CODES =
new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);

static {
VALID_CODES.add("AA");
VALID_CODES.add("AB");
VALID_CODES.add("SS");
VALID_CODES.add("DD");
VALID_CODES.add("YY");
VALID_CODES.add("ZZ");
VALID_CODES.add("AX");
}

关于java - 在 if 或 else if 中使用 OR 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27291479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com