- 条件触发执行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类的值
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 集合 Listwhilelist=new ArrayList<>(); for(Integer i:list){ // do something }
- 先判断再执行
- 循环执行,直到满足退出条件
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); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)