0基础java入门:第十一节.Java中控制语句-选择语句

第十一节.Java中控制语句-选择语句

switch选择语句基础语法

switch语句一般用来处理简单的数据;复杂点的数据,比如涉及到大小判断、加减法运算等等一般使用if...else if...else语句。个人感觉再工作过程中使用的地方不多,只适合用来处理一些比较简单的数据和业务场景。

switch 语句和 if语句有些相似,某些情况下两种语句是可以互换的。不同的是switch是通过判断变量值来选择执行语句的。例如:通过一个数字来代表一星期的某一天。用1~7代表 周一到周日。我们来观察以下这个逻辑的伪代码:

// 伪代码 用来 分析语法
表示星期的数字
	如果数字是1 ,输出星期一。
	如果数字是2,输出星期二。
	如果数字是3 ,输出星期三。
	如果数字是4 ,输出星期四。
	如果数字是5 ,输出星期五。
	如果数字是6 ,输出星期六。
	如果数字是7 ,输出星期日。
	如果是其他数字,输出不再考虑的范围内。

对于以上的伪代码,大家可能向到可以用 if else if 的语法来完成实现。其实if elseif 和switch case语句在某些情况下是可以相互转换的。switch相对来说阅读起来更加方便。我们将伪代码进一步具体:

// 伪代码 用来分析语法
switch(用于表示星期的数字){
	case 常量1:输出星期1;break;
    case 常量2:输出星期1;break;
    case 常量3:输出星期1;break;
    case 常量4:输出星期1;break;
    case 常量5:输出星期1;break;
    case 常量6:输出星期1;break;
    case 常量7:输出星期1;break;
    default:不再考虑范围内;
}

通过以上的伪代码我们可以初步了解switch case的语法格式,具体如下:

// 伪代码 用来演示语法
switch(表达式){
    case 目标值1:执行语句1;break;
    case 目标值2:执行语句1;break;
    … …
    case 目标值n:执行语句n;break;
    default:最后的执行语句;
}

switch执行顺序是这样的,通过switch后的表达式的值去匹配case后的目标值进行匹配。如果找到的匹配的值,会执行对应的case后的语句。没有找到任何匹配的值就执行 default后的最后的执行语句。这里需要注意的是switch后的表达式的值只能是 byte ,short ,int ,char类型,从jdk1.7开始可以是String字符串类型的值。如果传入其他的值会报错。break在一些情况下也是可以不写的。我们之后会详细讲解。先来看一下最基本的代码事例。

代码演示:

public class Demo1{
	public static void main(String[] args){
		// switch语句 演示
		int week = 3; // 代表周几
		switch(week){
			case 1:System.out.println("星期一");break;
			case 2:System.out.println("星期二");break;
			case 3:System.out.println("星期三");break;
			case 4:System.out.println("星期四");break;
			case 5:System.out.println("星期五");break;
			case 6:System.out.println("星期六");break;
			case 7:System.out.println("星期日");break;
			default : System.out.println("不再考虑范围内");
		}
	}
}

执行结果:

分析一波:分析以上代码和结果。由于变量week的值是3。整个switch语句中匹配结果满足case 3 输出星期三。我们可以更改一下week变量的值。然后反复编译和执行以下查看结果。

break关键字再switch语句中的作用

下边我们来主要看一看break在switch 的特殊用法。首先break并不是必须要写。break有中断,跳出的意思。我们可以中认为 case 一边是switch语句块的入口,当从入口进入执行程序,如果碰到了break就相当于到了出口跳出了整个语句块,即语句块执行完成。如果碰不到break就继续向下执行,直到碰到了break或者是switch的所有语句都执行完成。如下的代码:

代码演示:

public class Demo1{
	public static void main(String[] args){
		// switch语句 演示
		int week = 1;
		switch(week){
			case 1:System.out.println("星期一");
			case 2:System.out.println("星期二");
			case 3:System.out.println("星期三");
			case 4:System.out.println("星期四");break;
			case 5:System.out.println("星期五");
			case 6:System.out.println("星期六");
			case 7:System.out.println("星期日");
			default : System.out.println("不再考虑范围内");
		}
	}
}

执行结果:

分析一波:

week变量的值是1 ,程序从 case 1 开始进入执行 输出 “星期一”,之后并没有碰到break ,继续向下执行也就输出了“星期二”,“星期三”,“星期四”,输出“星期四”后碰到了break,switch语句块执行结束。然后我们将 week的值改变成5,再次执行获得以下结果。

分析一波:

分析执行结果:week变量5从case 5 开始进入 之后都没有break ,就把所有的输出都执行了,直到switch的最后一行。根据break的这个特性,如果多个case后的执行语句是一样的我们可以省略break,并且值书写一次执行语句即可。

根据这个使用特性,我们来书写一个新的程序。例如:我们来判断一周中的某一天是否是工作日。同样用1~7代表 周一到周日。当数字是1,2,3,4,5是就代表是工作日,6,7代表休息日。代码如下:

代码演示:

public class Demo1{
	public static void main(String[] args){
		// switch语句 演示
		int week = 1;
		switch(week){
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:System.out.println("工作日");break;
			case 6:
			case 7:System.out.println("休息日");break;
			default : System.out.println("不再考虑范围内");
		}
	}
}

执行结果:

分析一波:week的值是1,从case 1 进入switch语句块,之后没有break一致向下执行直到输出 “工作日” 后,碰到break结束语句块执行。我们可以修改一些week变量的值,反复编译和执行几次观察结果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值