选择结构——switch语句

本文详细介绍了Java中的switch语句基本语法,包括其执行流程、注意事项和代码示例。强调了case值的唯一性、switch适用的数据类型限制,以及break语句的重要性。通过实例展示了当输入不同值时,程序如何根据switch结构执行。同时提醒开发者在编写switch语句时避免省略break以防止穿透执行。

switch语句基本语法

switch(整数|枚举|字符|字符串){ 
	 case 内容1 : 
	 内容满足时执行语句; 
	 [break;] 
	 case 内容2 :
	 内容满足时执行语句; 
	 [break;] 
	  ... 
	 default: 
	 内容都不满足时执行语句; 
	 [break;] 
}

代码示例:按照day的值输出星期

public class Week{
	public static void main(String[] args){
		int day = 8; 
		switch(day) { 
			 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("数值错误,请重新输入");
			 break;
		}
	}

输入1和7时
在这里插入图片描述
在这里插入图片描述
当输入错误值-1和8时
在这里插入图片描述
执行流程:

  1. 先计算出表达式的值
  2. 和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
  3. 如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

注意事项:

1.多个case后面的数值不能一样。

 	case 1: 
	System.out.println("星期一"); 
	break; 
	case 1: 
	System.out.println("星期二"); 
	break; 

这种情况就会发生编译错误
在这里插入图片描述
2.switch后面括号中只能跟下列数据类型
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举

比如long虽然是整数,但是因为switch的编译会用到两个指令,tablesswitch和lookupswitch。而这2个指令指令只会运行在int指令下,低于int的正数类型会被转为int类型,而这一点和short、byte等类型在计算时会被转为int来处理的表现是一致的。long类型超过了int的范围,所以会编译报错。

	long day = 8; 
	switch(day) { 
		case 1: 
		System.out.println("星期一"); 
		break; 
		case 2: 
		System.out.println("星期二"); 
		break;
		... 

在这里插入图片描述
3. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句也可以省略。但是一般不建议省略break。因为switch的执行规则是“匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”

public class DemoSwitch{
	public static void main(String[] args){
		int num = 2; 
		switch(num) { 
			 case 1: 
			 System.out.println("你好"); 
			 break; 
			 case 2: 
			 System.out.println("hi"); 
			 //break; 这里break省略掉
			 case 3: 
			 System.out.println("hello"); 
			 break; 
			 default:
			 System.out.println("haha");
			 break;
		}
	}
}

在这里插入图片描述
这里编译可以通过,但是运行时,匹配到case 2后,由于没有break语句,程序就会穿透case 3,继续执行里面的语句,直到遇见break才会停止。所以建议不要省略break语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值