java之switch语句

/**
* 关于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