目录
前言
如果你前面已经学过if语句的话,你会发现if语句在多重嵌套下,会显得非常凌乱,代码的可读性也非常差。所以switch语句也可以实现if语句相同的功能,只不过在多重判断下,运用switch语句会是代码更加简洁。
一、switch语法结构
1、语句结构
switch语句也是一种常用的选择结构语句,作用类似if语句的多分支功能,但switch只能进行等值问题的分流,它由一个switch表达式和case关键字组成。其语法结构如:
switch //表达式
{
case 值1:语句1;
break;
case 值2:语句2;
break;
.......
casse 值n:语句n;
break;
default: 语句n+1;
break;
}
2、执行流程
- 首先计算机表达式的值。
- 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句,然后结束整个switch语句。
俗话说“实践是验证真理的唯一标准”,看下以下案例你会更加明白,
public class switchdemo {
public static void main(String[] args) {
//number: 1 2 3 4 5
//定义变量想要的数字
String number ="3";
//利用switch和想要的数字进行匹配
switch (number) { //表达式 ()
case "1":
System.out.println("1"); //输出
break; //结束
case "2":
System.out.println("2");
break;
case "3":
System.out.println("3");
break;
case "4":
System.out.println("4");
break;
case "5":
System.out.println("5");
break;
default:
System.out.println("输入有误,请重新输入");
break;
}
}
}
通过这个小小的案例你看明白了嘛?还不是很理解是吧!没关系,小编在为你解析下。首先你先定好一个变量你想要的数字, String number ="3"; 然后用switch语句,接下来case就会跟要和表达式进行比较的值,匹配到你所定义的值就显示,如果都匹配不到你定义的值default就反馈"输入有误,请重新输入"
二、 语句格式说明
- switch:启用当前switch语句;
- 表达式:一般接受具体的变量(将要匹配的值)取值为byte、short、int、char。JDK5以后是可以枚举,DJK7以后可以是String。
- case:后面跟的是要和表达式进行比较的值(被匹配的值)。
- break:表示中断,结束的意思,用来结束switch语句。
- default:表达所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
- case:后面的值只是字面量,不能是变量。case给出的值不允许重复。
三、switch扩展知识
- default的位置和省略:
- 位置:default不一定是要卸载最下面的,我们可以写在任意位置,只不过是习惯会写在最下面
- 省略:default可以省略,语法没有问题,但是不建议省略;
- case穿透:
- 就是语句中没有写break导致的;
- 执行流程:
- 首先还是会拿着小括号中的表达式的值跟下面每一个case进行匹配;
- 如果匹配上了,就会执行对应的语句,如果此时发现了break,那么结束整个switch语句;
- 如果没有发现break,那么程序会继续执行下一个case的语句,一直遇到break或者大括号为止;
- switch和if第三个种格式各自的使用场景
- if的第三种格式:一般用于对范围的判断
- switch:把有限个数据一一列举出来,让我们任选其一