判断
注意
- 条件触发执行if内的语句,if外的语句都会执行
单if
if(布尔表达式为true){
// do something
}
// 继续执行其他
if else
if(布尔表达式为true){
// do something
} else {
// do something
}
// 继续执行其他
if else if
if(布尔表达式为true){
// do something
} else if(布尔表达式为true) {
// do something
} else {
// do something
}
// 继续执行其他
分支
注意
- expression数据类型限制:byte、short、int、char,enum,jdk7+可以用String
- value数据类型限制:常量或字面量(直接写的量)
- value数据类型限制:expression使用enum类型时,value必须使用enum类的值
case break default
switch(expression){
case value1:
// do something
break;
case value2:
// do something
break;
default:
// do something
}
case穿透
- expression可能满足多个case
- case没有break将继续执行后面的case
switch(expression){
case value1:
// do something
case value2:
// do something
break;
default:
// do something
}
无default
- 没有兜底处理,expression必须满足任一case
switch(expression){
case value1:
// do something
break;
case value2:
// do something
break;
}
枚举
- expression使用enum类型时,value必须使用enum类的值
switch(color){
case READ:
// do something
break;
case YELLOW:
// do something
break;
default:
// do something
}
循环
for i
for(初始化; 布尔表达式; 更新) {
// do something
}
for(int i=0,j=0;i<10&&j<20;i++,j++){
// do something
}
for 数组集合
// for 数组
int[] values={1,2,3};
for(int value:values){
// do something
}
// for 集合
List<Integer> list=new ArrayList<>();
for(Integer i:list){
// do something
}
while
- 先判断再执行
- 循环执行,直到满足退出条件
while(布尔表达式为true) {
// do something
}
do while
- 先执行再判断
- 循环执行,直到满足退出条件
do{
// do something
}while(布尔表达式为true);
卫语句
- 作用:以逆向思维模式,减少if嵌套,降低单元测试难度
- 多层条件语句建议使用卫语句、策略模式、状态模式等方式重构(阿里巴巴 Java 规范)
- 卫语句是一种逆向思维方式,先把不想执行的情况处理掉,留下想执行的情况
结构
// 这个布尔表达式,一般是不想执行的情况
if (布尔表达式为true){
continue;
}
例子
// 求质数3, 5, 7的倍数
// 像1个横着的金字塔,当判断条件过多时,金字塔越来越高
for (int v = 1; v <= 1000; v++) {
if (i%3 == 0){
if (i%5 == 0){
if (i%7 == 0){
System.out.println(i);
}
}
}
}
// 多个&&给单元测试带来复杂性
for (int v = 1; v <= 1000; v++) {
if (i%3 == 0 && i%5 == 0 && i%7 == 0){
System.out.println(v);
}
}
// 卫语句
for (int v = 1; v <= 100; v++) {
if (i%3 !=0){
continue;
}
if (i%5 !=0){
continue;
}
if (i%7 !=0){
continue;
}
System.out.println(v);
}
本文含有隐藏内容,请 开通VIP 后查看