if
根据判定条件的结果(真或假)决定执行某个分支的代码
if 的分支三种格式:
格式1:
if(条件表达式){
语句体;
}
格式2:
if(条件表达式){
语句体1;
}esle{
语句体2;
}
格式3:
if(条件表达式){
语句体1;
}else if(条件表达式){
语句体2;
}esle{
语句体3;
}
public class IfDemo { public static void main(String[] args) { // 1.if(条件语句){ } int a = 20; if (a>=18){ System.out.println("成年了"); } // 2.if(条件语句){ }else{ } if (a>=50){ System.out.println("中年人"); }else{ System.out.println("成年人"); } // 3.if(条件语句){ }else if(条件语句){ }...else if(条件语句){ }else{} if (a>=0&&a<=11){ System.out.println("小学生"); }else if (a>=12&&a<=18){ System.out.println("中学生"); }else if (a>=19&&a<=24){ System.out.println("大学生"); }else{ System.out.println("毕业了"); } } }
switch
匹配条件取执行分支,适合做值匹配的分支选择,结构和格式清晰
执行流程:
1.先执行表达式的值,拿着这个值和case的值进行匹配
2.匹配哪个case的值为true就执行哪个case块,遇到break就跳出switch分支
3.如果case后的值都不匹配则执行default代码
switch格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
default:
语句体;
}
public class SwitchDemo { public static void main(String[] args) { String weekday = "周三"; switch (weekday){ case "周一": System.out.println("吃肯德基"); break; case "周二": System.out.println("吃麦当劳"); break; case "周三": System.out.println("吃必胜客"); break; case "周四": System.out.println("吃德克士"); break; case "周五": System.out.println("吃海底捞"); break; case "周六": System.out.println("吃自助餐"); break; case "周日": System.out.println("吃大骨头"); break; default: System.out.println("时间输入有误"); } } }
switch分支注意事项:
1.表达式类型只能是byte,short,int,char,JDK5开始支持枚举,JDK7开始支持String,不支持double,float,long
2.case给出的值不允许重复,且只能是字面量,不能是变量
3.不要忘记写break,否则会出现穿透现象
注意:Java中小数不能精确运算(a/b→a*1.0/b)
switch穿透性
如果代码执行没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何的值匹配),直到遇到break才跳出分支,这就是switch的穿透性
public class SwitchDemo { public static void main(String[] args) { int month = 1; switch (month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println("31天"); break; case 2: System.out.println("闰年29天,非闰28天"); break; case 4: case 6: case 9: case 11: System.out.println("30天"); break; default: System.out.println("您输入有误!"); } } }
1.什么情况下会出现switch穿透现象?
case块中没有写break
2.switch穿透性能解决什么问题?
存在多个case分支的功能代码是一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码。