switch语句:
- 1、switch语句也是选择语句,也可以叫做分支语句。
- 2、switch语句的语法格式
switch(值){
case 值1:
java语句;
java语句;...
break;
case 值2:
java语句;
java语句;...
break;
case 值3:
java语句;
java语句;...
break;
default:
java语句;
}
以上是一个完整的switch语句:
其中:break;语句不是必须的。default分支也不是必须的。
switch语句支持的值有哪些?
支持int类型以及String类型。
但一定要注意JDK的版本,JDK8之前不支持String类型,只支持int。
在JDK8之后,switch语句开始支持字符串String类型。
switch语句本质上是只支持int和String,但是byte,short,char也可以
使用在switch语句当中,因为byte short char可以进行自动类型转换。
switch语句中“值”与“值1”、“值2”比较的时候会使用“==”进行比较。
3、switch语句的执行原理
拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,
然后遇到"break;"语句,switch语句就结束了。
如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,
则执行该分支中的java语句,然后遇到break;语句,switch结束。
注意:如果分支执行了,但是分支最后没有“break;”,此时会发生case
穿透现象。
4、匹配成功的分支执行,分支当中最后有“break”语句的话,整个Switch语句终止
5、匹配成功的分支执行,分支当中没有“break”语句的话,直接进入下一个分支执行(不进行匹配)
这种现象被称为case穿透现象。【提供break;语句可以避免穿透】
6、所有分支都没有匹配成功,当有default的语句话,会执行default分支当中的程序
7、switch后面和case后面只能是int后者String类型的数据,不能是其它类型
当然byte,short,char也可以直接写到switch和case后面,因为它们可以进行自动类型转换
byte,short,char可以自动转换成int类型
JDK6的,switch和case后面只能是int类型
JDK7之后包括7版本在内,引入新特性
8、case可以合并:
int i = 10; switch(i){ case 1 ;case 2 ;case 3; case 10: Syetem.out.println("Test Code!"); }
public class SwitchTest01{ public static void main(String[] args){ /* // switch只支持int和String类型。 // 错误: 不兼容的类型: 从long转换到int可能会有损失 long x = 100L; switch((int)x){ case x: System.out.println("就是b"); break; } */ /* byte a = 10; switch(a){ case a : System.out.println("就是a"); break; } */ /* short s = 100; switch(s) } */ /* char c = 'a'; switch(c){ } */ /* //switch也支持字符串String类型。 String username = "zhangsan"; switch(username){ case "username" : System.out.println("switch语句支持String类型!"); } */ //接受用户的输入: //1 表示星期一 //2 表示星期二 //3 表示星期三 //... //7 表示星期日 //创建键盘扫描器对象 /* java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("请输入数字:"); int num = s.nextInt();//接收用户键盘输入的值 switch(num){ case 1 : case 10 : System.out.println("星期一"); break; case 2 : System.out.println("星期二"); case 3 : System.out.println("星期三"); case 4 : System.out.println("星期四"); case 5 : System.out.println("星期五"); case 6 : System.out.println("星期六"); case 7 : System.out.println("星期七"); default : System.out.println("你输入的星期有误!"); } */ /* String username = "zhangsan"; switch(username){ case "zhangsan" : System.out.println("我就是法外狂徒张三!"); break; } */ //创建键盘扫描器对象 java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("请输入星期:"); String day03 = s.next();//接收用户键盘输入的值 switch(day03){ case "星期一" : System.out.print("1"); break; case "星期二" : System.out.print("2"); break; case "星期三" : System.out.print("3"); break; case "星期四" : System.out.print("4"); break; case "星期五" : System.out.print("5"); break; case "星期六" : System.out.print("6"); break; case "星期日" : System.out.print("7"); break; default : System.out.print("你输入的数据非法!"); /* char c = 'A'; switch(c){ case 'A' : System.out.println("高级"); break; case 66 : //B的ANSI码 System.out.println("高级"); break; case 'B' : System.out.println("高级"); break; case 'C' : System.out.println("高级"); break; } */ } } }
- 9.运行效果图: