Java-switch case
/**
* 关于switch语句:
* 1、switch语句也属于选择结构,也是分支结构
* 2、switch语句的语法结构:
* switch(int或者String类型的字面值或者变量){
* case int或String类型的字面值或变量:
* java语句;
* java语句;
* java语句;
* ...
* break;
* case int或String类型的字面值或变量:
* java语句;
* java语句;
* java语句;
* ...
* break;
* case int或String类型的字面值或变量:
* java语句;
* java语句;
* java语句;
* ...
* break;
* case int或String类型的字面值或变量:
* java语句;
* java语句;
* java语句;
* ...
* break;
* default :
* java语句;
* ...
* }
* 3、switch语句的执行原理:
* switch后面小括号众的"数据"和case后面的"数据"进行一一匹配,匹配成功的分支之行。
* 按照自上而下的顺序依次匹配
* 4、匹配成功的分支执行,分支当中最后有break;语句的话,整个switch语句终止
* 5、匹配成功的分支执行,分支当中没有break;语句的话,直接进入下一个分支执行(不进行匹配),
* 这种现象被称为case穿透现象。【提供break;语句,可以避免穿透】
* 6、所有分支都没有匹配成功,当有default的语句,会执行default分支当中的程序
* 7、switch和case后面只能是int或String类型的数据,不能是探测其他类型。
* byte,short,char可以自动转换为int类型
* JDK6,switch和case后面只能探测int
* JDK7之后包括7版本在哪,switch和case后面可以探测int或String类型的数据
* 8、case可以合并
* int i=10;
* switch(i){
* case 1: case 2: case 3: case 10:
* System.out.println("Test code");
* case 4: case 5:
* System.out.println("Test coding");
* case 6:
* System.out.println("coding");
*
* }*/
1 public class SwitchTest {
2 public static void main(String args[]){
3 /*
4 long a = 10L;
5 int b = a; //编译报错,不可以自动转换,
6 */
7
8 /*
9 long x = 100L;
10 switch(x){} //编译报错,损失精度
11 */
12
13 //解决编译错误
14 long x = 100L;
15 switch ((int)x){ }
16
17 byte b = 10;
18 switch (b){ }
19
20 short s = 10;
21 switch (s){ }
22
23 char c = 'A';
24 switch (c){ }
25
26 switch ("zhangshan"){}
27
28 //switch (true){} //编译报错
29 }
30 }
写一个完整的code:
1 import java.util.Scanner;
2 public class SwitchTest {
3 public static void main(String args[]){
4 /*
5 接收用户的输入:0-6分别代表星期日,星期一...星期六*/
6 Scanner s = new Scanner(System.in);
7 System.out.println("请输入数字:");
8 int num = s.nextInt();
9 switch (num){
10 case 1:
11 System.out.println("星期一");
12 break;
13 case 2:
14 System.out.println("星期二");
15 break;
16 case 3:
17 System.out.println("星期三");
18 break;
19 case 4:
20 System.out.println("星期四");
21 break;
22 case 5:
23 System.out.println("星期五");
24 break;
25 case 6:
26 System.out.println("星期六");
27 break;
28 case 0:
29 System.out.println("星期日");
30 break;
31 default:
32 System.out.println("不合法的数字");
33 }
34
35 //数字穿透
36 System.out.println("请输入数字:");
37 int num1 = s.nextInt();
38 switch (num1){
39 case 1:
40 System.out.println("星期一");
41 case 2:
42 System.out.println("星期二");
43 case 3:
44 System.out.println("星期三");
45 break;
46 case 4:
47 System.out.println("星期四");
48 break;
49 case 5:
50 System.out.println("星期五");
51 break;
52 case 6:
53 System.out.println("星期六");
54 break;
55 case 0:
56 System.out.println("星期日");
57 break;
58 default:
59 System.out.println("不合法的数字");
60 }
61 }
62 }
结果: 第二次穿透,输入了一个1,然后打印出了星期一星期二,星期三,因为匹配了1,没有break,所以直接进入2,没有break,直接进入3,3有break,
所以退出,2和3并没有进行匹配,而是穿透的效果。

转载于:https://www.cnblogs.com/peiminer/p/14231349.html


浙公网安备 33010602011771号