switch语句 (不是我不小心)
今天早上刚来上班,回顾一下自己写的代码。本来想重构一下switch语句
源代码如下
boolean result = true;
if ("<".equals(operator)) {
result = staffAge < age;
} else if ("<=".equals(operator)) {
result = staffAge <= age;
} else if ("=".equals(operator)) {
result = staffAge.equals(age);
} else if (">".equals(operator)) {
result = staffAge > age;
} else if (">=".equals(operator)) {
result = staffAge >= age;
} else {
result = true;
}
return result;
本来想用switch重构 但是突然转念又一想,不对啊 人家switch后面的整数选择因子的限制是必须地
可以是int类型的变量,如1、2、12等。
可以是short类型的变量。
可以是char类型的变量。
可以是byte类型的变量。
可以是整数表达式,如上面的代码片段中的k + j,或者可以是1+1、1+2。
注意了 这里可没说包含string哦。所以宣告重构失败了
但是看见那么多的if else确实不怎么爽啊
在看看case后面的限制
case后面必须是一个整型常量或者常量表达式,如1、2,若用表达式的时候,表达式中每个变量,必须是final的(常量1、2、3等,当然也可以,我们可以把这样的常量看成是final的)。
case后面不能是非final的变量,比如用"case k“就会报编译错误,因为k不是final类型的变量,如果用"case j"则是正确的。
case后面的常量或常量表达式,不能有相同的值。
以前可能没有注意到这么些 今天确实长见识喽。
源代码如下
boolean result = true;
if ("<".equals(operator)) {
result = staffAge < age;
} else if ("<=".equals(operator)) {
result = staffAge <= age;
} else if ("=".equals(operator)) {
result = staffAge.equals(age);
} else if (">".equals(operator)) {
result = staffAge > age;
} else if (">=".equals(operator)) {
result = staffAge >= age;
} else {
result = true;
}
return result;
本来想用switch重构 但是突然转念又一想,不对啊 人家switch后面的整数选择因子的限制是必须地
可以是int类型的变量,如1、2、12等。
可以是short类型的变量。
可以是char类型的变量。
可以是byte类型的变量。
可以是整数表达式,如上面的代码片段中的k + j,或者可以是1+1、1+2。
注意了 这里可没说包含string哦。所以宣告重构失败了
但是看见那么多的if else确实不怎么爽啊
在看看case后面的限制
case后面必须是一个整型常量或者常量表达式,如1、2,若用表达式的时候,表达式中每个变量,必须是final的(常量1、2、3等,当然也可以,我们可以把这样的常量看成是final的)。
case后面不能是非final的变量,比如用"case k“就会报编译错误,因为k不是final类型的变量,如果用"case j"则是正确的。
case后面的常量或常量表达式,不能有相同的值。
以前可能没有注意到这么些 今天确实长见识喽。
浙公网安备 33010602011771号