if选择结构
if选择结构根据条件判断之后再做处理的一种语法结构。
可用于等值判断,也可用于区间情况。
条件表达式的值为boolean类型。
执行顺序:先判断条件表达式,结果为true时,执行大括号里的代码;结果为false时跳过代码块,执行if后面的语句。
1.基本选择结构
处理单一或组合条件的情况。
语法:
if(条件表达式){
代码块//条件表达式为true要执行的代码,可以是一条语句也可以是一组语句
}
注意:如果if没有{}作为if体,那么if直接下一行就是if体(限于if体只有一行语句),建议不省略大括号。
2.if-else选择结构
处理简单的条件分支情况,符合if体输出if内容,反之输出else内容
语法:
if(条件表达式){
//代码块一
}else{
//代码块二
}
3.多重if选择结构
处理连续区间的条件分支情况
多重if当遇到第一个满足的表达式条件时执行当前的if语句,不再向下执行。即:针对多个条件时,如果一旦有一个条件满足就会执行该大括号中的内容,同时剩下的条件自动忽略。
语法:
if(条件一){
//代码块一
}else if(条件二){
//代码块二
}else{
//代码块三
}
注意:else if块的顺序是连续的,而不是跳跃的,是有顺序的排列。
4.嵌套if选择结构
处理复杂的条件分支情况
语法:
if(条件一){
if(条件二){
//代码块一
}else{
//代码块二
}
}else{
//代码块三
}
注意:
①只有当满足外层if选择的条件时,才会判断内层if的条件(当满足条件一时执行条件二里的内容,当不满足条件一时执行代码块三。)
②else总是与他前面最近的那个缺少else的if配对
书写规范:
if或else包含的代码块用大括号括起来;
相匹配的一对if和else应该左边对齐;
内层if结构相对于外层if结构要有一定的缩进
switch选择结构
1.switch选择结构方便的解决等值判断问题。
条件只能是等值的判断,而且只能是整形或者字符型的等值判断。
2.语法:
switch(表达式){
case 常量1:
//代码块1;
break;
case 常量 2:
//代码块2;
break;
case 常量 3:
//代码块3;
break;
default:
//代码块n;
//当以上所有条件都不符合时执行
}
注意:
①表达式和常量类型要统一;
②一定要加break;
③case空一格写变量;
④case后常量必须各不相同
3.switch选择结构的关键字
①switch:表示“开关”,switch语句小括号里可以是int、short、byte、char、枚举类型、String类型表达式。
②case:表示“情况、情形”,case后面可以是int、short、byte、char、枚举类型、String类型,通常是一个固定的值,顺序可改变。有冒号
③default:表示“默认”,即其他情况都不满足。后面紧跟冒号,通常放在末尾,也可以省略。
④break:表示“停止”,即跳出当前结构。
4.switch选择结构执行原理
switch后边的小括号中的数据和case后边的数据进行等值匹配,匹配成功的分支执行;按照自上而下的顺序依次匹配;
当所有分支都没有匹配成功,有default的语句的话,会执行default分支当中的语句。
注意:case可以合并,见下方代码
char num='B';
switch(num){
case 'A':
System.out.println("优秀");
break;
case 'B':
case 'C':
System.out.println("良好");
break;
case 'D':
System.out.println("合格");
break;
}
//以上代码输出结果为:良好
注意:switch选择结构的穿透现象:匹配成功后的分支执行,分支当中最后有“break”语句的话,整个switch语句终止,即跳出当前结构;分支当中最后没有“break”语句的话,直接进入下一个分支执行,这种现象称为穿透现象,break可以避免这种现象;
char num='B';
switch(num){
case 'A':
System.out.println("优秀");
break;
case 'B':
case 'C':
System.out.println("良好");
case 'D':
System.out.println("合格");
break;
}
//以上代码输出结果为:
//良好
//合格
选择结构注意:有时判断后不符合则不执行其代码块的内容,但判断执行的加加减减的值要保留。
int num=20;
if(num++<12){
System.out.println("橘子");//如果num自加一小于12输出橘子
}else{
System.out.println(num);//反之则输出num现在的值
}
//以上代码输出结果为:21