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”比较的时候会使用“==”进行比较。
- 支持int类型以及String类型。
-
3、switch语句的执行原理
- 拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,
然后遇到"break;"语句,switch语句就结束了。 - 如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,
则执行该分支中的java语句,然后遇到break;语句,switch结束。 - 注意:如果分支执行了,但是分支最后没有“break;”,此时会发生case
穿透现象。
- 拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,
-
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版本在内,引入新特性
- 当然byte,short,char也可以直接写到switch和case后面,因为它们可以进行自动类型转换
-
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.运行效果图: