一、switch概述
1、switch 关键字, 表示switch分支
2、表达式 对应一个值
3、case 常量1:当表达式的值等于常量1,就执行 语句块1
4、break:表示退出switch
5、如果和 case常量1 匹配,就执行语句块1,如果没有匹配,就继续匹配 case 常量2
6、如果一个都没匹配上,就执行default
二、基本语法
switch(表达式){
case 常量1 ://当...
语句块1;
break;
......
case 常量2:
语句块2;
break;//可有可无
}
三、案例演示
package com;
import java.util.Scanner;
public class Switch01 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个字符(a-g):");
char week = myScanner.next().charAt(0);
switch (week){
case 'a' :
System.out.println("今天星期一");
break;
case 'b' :
System.out.println("今天星期二");
break;
case 'c' :
System.out.println("今天星期三");
break;
case 'd' :
System.out.println("今天星期四");
break;
case 'e' :
System.out.println("今天星期五");
break;
case 'f' :
System.out.println("今天星期六");
break;
case 'g' :
System.out.println("今天星期日");
break;
default:
System.out.println("你输入的字符不对,请重新输入");
}
}
}
四、switch注意事项和细节讨论
1、表达式数据类型,应和case 后的常量类型一致, 或者是可以自动转成可以相互比较的类型, 比如输入的是字符, 而常量是 int
public class SwichDetail {
public static void main(String[] args) {
char c = 'a';
switch(c){
case 'a':
System.out.println("ok1");
break;
case 'hello'://错误 若 hello改为20;正确;因为可以相互转换
System.out.println("ok2");
break;
default:
System.out.println("ok3");
}
}
}
2、switch(表达式)中的表达式的返回值必须是:(byte,short、int、char、enum、String)
double c = 1.1;//double 不正确 不能转换成int 有损失
switch(c){//错误
case 1.1 :... //错误
System.out.println("ok");
break;
}
3、case子句中的值必须是常量,而不是变量
4、default子句是可选的,当没有匹配的case时, 执行default
5、break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break, 程序会顺序执行到switch结尾
import java.util.Scanner;
public class Switch01 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个字符(a-g):");
char week = myScanner.next().charAt(0);
switch (week){
case 'a' :
System.out.println("今天星期一");
// break;
case 'b' :
System.out.println("今天星期二");
// break;
case 'c' :
System.out.println("今天星期三");
// break;
case 'd' :
System.out.println("今天星期四");
// break;
case 'e' :
System.out.println("今天星期五");
// break;
case 'f' :
System.out.println("今天星期六");
// break;
case 'g' :
System.out.println("今天星期日");
// break;
default:
System.out.println("你输入的字符不对,请重新输入");
}
}
}
###穿透
int month = myScanner.nextInt();
switch(month){
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
default:
System.out.println("请输入正确的月份呢!");
}
五、Switch 和 if 的比较
1、如果判断的具体数值不多,而且符合byte、int、short、char、enum[枚举],String这六种类型。虽然两个语句都可以使用,建议使用swtich语句。
2、其他情况:对区间判断,对结果为boolean类型判断,使用if, if 的使用范围更广。