java基础知识点(5)——分支语句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是使用最经常的,要熟练掌握,多练几遍,巩固巩固。(根据自己的学习以及翻阅知识点整理的,侵权删)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值