分支语句if-switch
前言
在一个程序中,有很多的代码,代码的执行顺序,就是流程,用于控制代码流程的方式,就是流程控制,接下来我们学习一下流程控制
提示:以下是本篇文章正文内容,下面案例可供参考
一、分支结构----流程控制
1.在一个程序中,有很多的代码,代码的执行顺序,就是流程
2.用于控制代码流程的方式,就是流程控制。
3.流程控制的分类: (1)分支结构。 (2)循环结构
1.分支结构的概述
1.到达某个状态时,可能会有多种情况,每种情况都需要提前准备好,所以多条路的路口就是一个分支。代码写的多,程序运行的少。
2.实现格式有三种:
(1)if
(2)if.....else
(3)if...else if...else if........else
①if语句:if是如果的意思,满足了这种条件,才那个执行相应的代码,实现不同的逻辑
②Switch语句:根据某个变量的值,判读符合哪种执行条件。
1.1 If语句的第一种格式
1.1.1 格式
if(布尔表达式) {
语句体;
}
1.1.2. 说明
(1)If语句后面跟着的小括号,里面必须是boolean类型的值,if语句后面的小括号中,只要是计算结果是boolean类型,就合法。
(2)语句体,可以是任意操作。
1.1.3.执行流程
(1)计算布尔表达式的值,要么为true,要么为false (2)如果计算结果为true,执行语句体
(3)如果计算结果为false,就不执行语句体。
1.1.4.代码示例
//第一种方式if(布尔类型){语句体}
//键盘录入,判断年龄是否大于十八岁,是的话输出年龄大于十八已成年
public static void main(String[] args){
//把Scanner方法new进来
Scanner sc = new Scanner(System.in);
//输出提示语
System.out.println("请输入你的年龄:");
//获取键盘输入的数据
int age = sc.nextInt();
if(age > 18){
System.out.println("年龄大于十八,已成年");
}
}
1.1.5.If语句的注意事项
1.if后面跟着的小括号里面,必须是boolean类型的值。
2.If语句后面跟着的小括号里面,只要计算结果为boolean类型,就算合法
3.在小括号后面不要加分号,一般来说,有左大括号,就没有分号,有分号,就没左大括号。
4.语句体:可以是任意语句,如果语句体只有一句,那么大括号可以省略,但是建议所有情况都加上大括号,不要省略。
1.2 if语句的第二种格式
1.2.1.格式
if(条件表达式) {
语句体1;
}else{
语句体2;
}
1.2.2.说明
(1)是否有某种情况,可以语句体1和语句体2都不执行?不可能,else就已经包含了if不满足的所有状态。
(2)是否有某种情况,可以让语句体1和语句体2都执行?不可能,因为语句体1执行了,if语句就直接结束了。
(3)只能执行其中的一句,并且一定会执行其中的一句
1.2.3.执行流程
(1)计算条件表达式的值,要么为true要么为false (2)如果条件表达式的值为true,执行语句体1
(3)如果条件表达式的值为false,执行语句体2
1.2.4.代码示例
//判断键盘输入的a与b哪个大
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//键盘提示获取输入的值
System.out.println("请输入a的值:");
int a = sc.nextInt();
System.out.println("请输入b的值:");
int b = sc.nextInt();
if ( a > b )
{
System.out.println("a的值最大,最大为:" + a);
}else{
System.out.println("b的值最大,最大为:" + b);
}
}
1.3 If语句的第三种格式
1.3.1.格式
if(条件表达式1) {
语句体1;
}else if (条件表达式2) {
语句体2;
} else if(条件表达式3) {
语句体3;
}
.......
}else if(条件表达式n) {
语句体n;
}else{
语句体n+1;
}
1.3.2.执行流程
(1)计算条件表达式1,如果为true,就执行语句体1
(2)如果条件表达式1位false,计算条件表达式2,如果为true,就执行语句体2
(3)如果条件表达式2位false,就执行条件表达式3…
(4)如果条件表达式1~条件表达式n全都为false,那么就执行语句体else n+1
1.2.3.说明
(1)如果条件表达式1不满足 条件表达式2计算为true,执行语句体2
(2)最后的else语句可以有也可以没有,如果有,就一定有执行的内容,如果没有就可能什么都不执行。
1.2.4代码示例
//键盘录入三个数判断大小 if(){
// }else if(){
// }else{
// }
public static void main(String[] args){
//new进来Scanner方法
Scanner sc = new Scanner(System.in);
//提示语
System.out.println("请输入三个整数:");
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int mun;
if(a>b){
if(a>c){
System.out.println("三个数中最大的是:" + a );
}else{
System.out.println("三个数中最大的是:" + c );
}
}else{
if(b>c){
System.out.println("三个数中最大的是:" + b );
}else{
System.out.println("三个数中最大的是:" + c );
}
}
}
2. switch语句
1.概念
switch:便是英文中的开关,每个条件都像一扇门,开着的,咱们就可以执行,否则就到下一扇门判断。
2.格式:
Switch(表达式) {
case 常量1:
语句体1;
break;
case 常量2;
语句体2;
break;
........
case 常量n;
语句体n;
break;
default:
语句体n+1;
}
3.执行流程:
(1)计算表达式的值,分别和各个常量匹配。 (2)如果和常量1匹配,那么就执行语句体1,break,switch语句就结束了。
(3)如果和常量1不匹配,那么就判断是否和常量2匹配,如果匹配就执行语句体2,break,switch语句结束。
(4)以此类推,如果常量1~常量n都没有和表达式的值匹配,那么就执行default中的内容,switch语句结束。
4.代码示例
//键盘输入月份进行判断季节键盘录入一个月份,输出这个月份的季节
//345月是春季,678是夏季,9、10、11秋季,12、1、2冬季
//其他数字,没有任何季节,录入错误
public static void main(String[] args){
Scanner sc = new Scanner(System.in);//new进来方法
System.out.println("请输入一个月份进行判断季节:");
int m = sc.nextInt();
switch(m){
case (12):
System.out.println("您输入的月份是" + m + ",该月份为冬季");
break;
case (1):
System.out.println("您输入的月份是" + m + ",该月份为冬季");
break;
case (2):
System.out.println("您输入的月份是" + m + ",该月份为冬季");
break;
case (3):
System.out.println("您输入的月份是" + m + ",该月份为春季");
break;
case (4):
System.out.println("您输入的月份是" + m + ",该月份为春季");
break;
case (5):
System.out.println("您输入的月份是" + m + ",该月份为春季");
break;
case (6):
System.out.println("您输入的月份是" + m + ",该月份为夏季");
break;
case (7):
System.out.println("您输入的月份是" + m + ",该月份为夏季");
break;
case (8):
System.out.println("您输入的月份是" + m + ",该月份为夏季");
break;
case (9):
System.out.println("您输入的月份是" + m + ",该月份为秋季");
break;
case (10):
System.out.println("您输入的月份是" + m + ",该月份为秋季");
break;
case (11):
System.out.println("您输入的月份是" + m + ",该月份为秋季");
break;
default :
System.out.println("没有任何季节,录入错误");
}
}
5.switch语句的注意事项
1.单词解释:
(1)Switch:开关 case:情况; break:破坏、退出; default:默认
2.表达式:
(1)Jdk1.5之前支持:byte、short、char、int
(2)Jdk1.5支持:枚举类型
(3)Jdk7及以后支持:String
3.case后面只能跟常量,不能跟变量。
4.case穿透
每个case语句体后面,一定要跟上一个break语句,否则就无法结束switch语句,并且发生case穿透。case穿透的利用:多个情况如果是相同的执行逻辑,那么就可以使用case穿透。
5.case穿透代码示例:
public static void main(String[] args){
Scanner sc = new Scanner(System.in);//new进来方法
System.out.println("请输入一个月份进行判断季节:");
int n = sc.nextInt();
switch(n){
case (12):
case (1):
case (2):
System.out.println("您输入的月份是" + n + ",该月份为冬季");
break;
case (3):
case (4):
case (5):
System.out.println("您输入的月份是" + n + ",该月份为春季");
break;
case (6):
case (7):
case (8):
System.out.println("您输入的月份是" + n + ",该月份为夏季");
break;
case (9):
case (10):
case (11):
System.out.println("您输入的月份是" + n + ",该月份为秋季");
break;
default :
System.out.println("没有任何季节,录入错误");
}
}
6.default语句
可以写也可以不写,如果不写,就有可能一个语句都不执行,建议把default语句加上。
default语句可以写在任意位置,无论你写在什么位置,都是在最后去匹配,建议把default语句写在最后。
7.Switch语句结束的条件,
(1)碰到break语句
(2)碰到右大括号。
二、If和switch语句的区别
1.相同点
If语句和switch都可以表达分支结构
2.不同点
①If语句格式相对灵活,更加强大,switch语句相对弱小,所有的switch语句都可以被if语句替代。
②If语句更多的是做一些连续性的判断,而switch语句更多的是做一些离散型的匹配。
③If语句每次都需要获取表达式的值,而switc只获取一次表达式的值,所以相对switch的效率要高一些。
总结
以上就是今天要讲的内容,本文仅仅介绍了流程控制的两种分类,个人感觉if是使用最经常的,要熟练掌握,多练几遍,巩固巩固。(根据自己的学习以及翻阅知识点整理的,侵权删)