1:switch语句(掌握)
(1)格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
格式解释说明:
switch:说明这是switch语句。
表达式:可以是byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:后面的值就是要和表达式进行比较的值
break:表示程序到这里中断,跳出switch语句
default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
(2)面试题
switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?
可以,不可以,JDK7以后可以
Demo.java
1 /* 2 switch语句格式: 3 switch(表达式) { 4 case 值1: 5 语句体1; 6 break; 7 case 值2: 8 语句体2; 9 break; 10 ... 11 default: 12 语句体n+1; 13 break; 14 } 15 16 格式的解释: 17 switch:表示这是switch选择结构 18 表达式:这个地方的取值是有限定的 19 byte,short,int,char 20 JDK5以后可以是枚举 21 JDK7以后可以是字符串 22 case:后面跟的是要和表达式进行比较的值 23 语句体:要执行的代码 24 break:表示中断,结束的意思,可以控制switch语句的结束。 25 default:当所有的值都和表达式不匹配的时候,就执行default控制的语句。其实它就相当于if语句的else。 26 27 面试题: 28 byte可以作为switch的表达式吗? 29 long可以作为switch的表达式吗? 30 String可以作为switch的表达式吗? 31 32 案例: 33 键盘录入一个数据,根据这个数据,我们输出对应的星期? 34 键盘录入1,对应输出星期一 35 键盘录入2,对应输出星期二 36 ... 37 键盘录入7,对应输出星期日 38 39 分析: 40 1:键盘录入,用Scanner实现 41 2:判断我们既可以使用if语句,也可以使用我们要讲解的switch语句 42 43 注意: 44 A:遇到左大括号缩进一个tab的位置。 45 B:关联不是很大的语句间空行 46 */ 47 import java.util.Scanner; 48 49 class SwitchDemo { 50 public static void main(String[] args) { 51 //创建键盘录入对象 52 Scanner sc = new Scanner(System.in); 53 54 //控制键盘录入数据 55 System.out.println("请输入一个数据(1-7):"); 56 int week = sc.nextInt(); //3 57 58 //switch判断语句 59 switch(week) { 60 case 1: 61 System.out.println("星期一"); 62 break; 63 case 2: 64 System.out.println("星期二"); 65 break; 66 case 3: 67 System.out.println("星期三"); 68 break; 69 case 4: 70 System.out.println("星期四"); 71 break; 72 case 5: 73 System.out.println("星期五"); 74 break; 75 case 6: 76 System.out.println("星期六"); 77 break; 78 case 7: 79 System.out.println("星期日"); 80 break; 81 default: 82 System.out.println("你输入的数据有误"); 83 break; 84 } 85 } 86 }
(3)执行流程:
A:首先计算表达式的值
B:和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。
C:如果没有匹配,就执行default的语句体n+1。
(4)注意事项:
A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
B:default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
特殊情况:
case就可以把值固定。
A,B,C,D
C:break可以省略吗?
可以省略,但是结果可能不是我们想要的。
会出现一个现象:case穿透。
最终我们建议不要省略
D:default一定要在最后吗?
不是,可以在任意位置。但是建议在最后。
E:switch语句的结束条件
a:遇到break就结束了
b:执行到末尾就结束了
Demo1.java
1 /* 2 switch语句的注意事项: 3 A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的 4 B:default可以省略吗? 5 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。 6 特殊情况: 7 case就可以把值固定。 8 A,B,C,D 9 C:break可以省略吗? 10 可以省略,但是结果可能不是我们想要的。 11 会出现一个现象:case穿透。 12 最终我们建议不要省略 13 D:default一定要在最后吗? 14 不是,可以在任意位置。但是建议在最后。 15 E:switch语句的结束条件 16 a:遇到break就结束了 17 b:执行到末尾就结束了 18 */ 19 import java.util.Scanner; 20 21 class SwitchDemo2 { 22 public static void main(String[] args) { 23 //创建键盘录入对象 24 Scanner sc = new Scanner(System.in); 25 26 //控制键盘录入数据 27 System.out.println("请输入一个数据(1-7):"); 28 int week = sc.nextInt(); //3 29 30 //定义常量 31 //int number = 3; 32 //然后把case后面的值改为number,就会报错 33 34 //switch判断语句 35 switch(week) { 36 case 1: 37 System.out.println("星期一"); 38 break; 39 case 2: 40 System.out.println("星期二"); 41 break; 42 case 3: 43 System.out.println("星期三"); 44 break; 45 case 4: 46 System.out.println("星期四"); 47 break; 48 case 5: 49 System.out.println("星期五"); 50 break; 51 case 6: 52 System.out.println("星期六"); 53 break; 54 case 7: 55 System.out.println("星期日"); 56 break; 57 default: 58 System.out.println("你输入的数据有误"); 59 //break; 60 } 61 } 62 }