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并没有进行匹配,而是穿透的效果。