选择结构分为四种:if单选择结构、if-else双选择结构、if-else if-else多选择结构、switch结构
1、if单选择结构
格式:
if(【布尔表达式】或者【true/false】){
【语句块】
}
表示的意思是:
如果布尔表达式结果是true或者直接就是true,则执行大括号内语句块,再执行大括号后面的语句
如果布尔表达式结果是false或者直接就是false,直接跳过大括号内语句块,此if单选结构失效,执行大括号后面语句
例:
if(3<2){
System.out.println("3<2真的");//不输出
}
System.out.println("3<2假的");//输出
if后的大括号可以不写,如果不写只作用于第一个语句,分号结束。但是无论如何都必须写,加强阅读性。
2、if-else双选择结构
格式:
if(【布尔表达式】或者【true/false】){
【语句块1】
}else{
【语句块2】
}
表示的意思是:
如果布尔表达式结果是true或者直接就是true,则执行语句块1,并且语句块2不执行,直接跳过语句块2,执行程序后面其他语句块
如果布尔表达式结果是false或者直接就是false,直接跳语句块1,执行语句块2,再执行程序后面其他语句块
例:
int score=80;
if(score>60){
System.out.println("及格");//输出
}else{
System.out.println("不及格");//不输出
}
3、if-else if-else多选择结构
格式:
if(【布尔表达式1】或者【true/false】){
【语句块1】
}else if(【布尔表达式2】或者【true/false】){
【语句块2】
}.......
else if(【布尔表达式n】或者【true/false】){
【语句块n】
}else{
【语句块n+1】
}
当布尔表达式1为真,则执行语句块1并跳过剩下所有多选择结构语句,否则判断布尔表达式2,
当布尔表达式2真时,则执行语句块2并跳过剩下所有多选择结构语句,以此类推。
如果布尔表达式1-n都为假,则执行语句块n+1,也就是else下的语句块。
例:
int a=10;
if(a<1){
System.out.println("是个小数");
}else if((a<10)&&(a>1)){
System.out.println("是个个位数数");
}else if((a<100)&&(a>9)){
System.out.println("是个两位数");//执行并输出
}else if((a<1000)&&(a>99)){
System.out.println("是个三位数");
}else{
System.out.println("是个很大的数");
}
4、switch结构
格式:
switch(【原始表达式】){
case 【值1】:【语句表达式1】;
case 【值2】:【语句表达式2】;
。。。
case 【值y】:【语句表达式y】;
。。。
case 【值n】:【语句表达式n】;
default:【默认表达式】;(deafult及其默认表达可以不写)
}
用法:先算【原始表达式】的值,如果【原始表达式】的值与【值1】~【值n】中某一个【值y】相同,那么从【语句表达式y】开始执行
再执行【语句表达式y+1】,直到【语句表达式n】,最后执行【默认表达式】;
如果再switch语句中看到了break;那么此流程控制语句被打断,直接跳过流程控制语句。
int a=1;
switch(a){
case 0:
a++;//不执行
case 1:
a--;//a变成0
case 2:
++a;//a变成1
case 3:
--a;//a变成0
default:
System.out.println(a);//输出0
}
注意:switch用于等值的判断。case后面必须是个值,不可以是区间
当布尔表达式是等值判断时,既可以多选择结构,也可以用switch结构
当布尔表达式是区间判断时,只能用多选择结构。
任何switch结构都可以用多选择结构替代
但遇到多值判断时,用switch结构,可阅读性更强