判断
注意
单if
if(布尔表达式为true){
}
if else
if(布尔表达式为true){
} else {
}
if else if
if(布尔表达式为true){
} else if(布尔表达式为true) {
} else {
}
分支
注意
- expression数据类型限制:byte、short、int、char,enum,jdk7+可以用String
- value数据类型限制:常量或字面量(直接写的量)
- value数据类型限制:expression使用enum类型时,value必须使用enum类的值
case break default
switch(expression){
case value1:
break;
case value2:
break;
default:
}
case穿透
- expression可能满足多个case
- case没有break将继续执行后面的case
switch(expression){
case value1:
case value2:
break;
default:
}
无default
- 没有兜底处理,expression必须满足任一case
switch(expression){
case value1:
break;
case value2:
break;
}
枚举
- expression使用enum类型时,value必须使用enum类的值
switch(color){
case READ:
break;
case YELLOW:
break;
default:
}
循环
for i
for(初始化; 布尔表达式; 更新) {
}
for(int i=0,j=0;i<10&&j<20;i++,j++){
}
for 数组集合
int[] values={1,2,3};
for(int value:values){
}
List<Integer> list=new ArrayList<>();
for(Integer i:list){
}
while
while(布尔表达式为true) {
}
do while
do{
}while(布尔表达式为true);
卫语句
- 作用:以逆向思维模式,减少if嵌套,降低单元测试难度
- 多层条件语句建议使用卫语句、策略模式、状态模式等方式重构(阿里巴巴 Java 规范)
- 卫语句是一种逆向思维方式,先把不想执行的情况处理掉,留下想执行的情况
结构
if (布尔表达式为true){
continue;
}
例子
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);
}