写在前面:本人是借助两本参考书自学的,其中部分例子和语句均是来自参考书。第一本:《Java 编程指南》,[美] Budi Kurniawan 著,闫斌 贺莲 译。第二本:《第一行代码 Java 视频讲解版》,李兴华 马云涛 著
在第四篇中写了 if 语句块,但在 if 语句块中,它判断语句里的条件只能是返回值为boolean数据类型的表达式,当需要判断其他类型的数据时不便于使用 if 语句块,这时就可以采用 switch 语句。
switch 语句
switch ( expression ) {
case data1 :
statement1(s);
break;
case data2 :
statement2(s);
break;
……
case data n :
statement n(s);
break;
default:
statement(s)
}
switch 语句中 expression 必须是返回值为 int 、string、枚举值的表达式,data也是对应的数据就可以了。当expression符合某一个case的data,则执行该case语句,其中break语句起不可少。
=============================================
ps:从JDK1.7开始,switch语句支持String(字符串)的直接判断,但我的JDK1.8进行String判断是会出错,我浏览了两个博客,一个说有问题,一个说没有问题(若有问题可以通过枚举enum解决),故先利用int做例子,String类型等实验出来后单独介绍。
=============================================
例子(来自个人文件firstesten,java):
public class firstesten {
public static void main(String[] args) {
int x = 2;
switch ( x ) {
case 1 :
System.out.println("该同学在1班");
break;
case 2 :
System.out.println("该同学在2班");
break;
case 3 :
System.out.println("该同学在3班");
break;
default :
System.out.println("未查询到该同学班级");
}
int y = 6;
switch ( y ) {
case 1 :
System.out.println("该同学在1班");
break;
case 2 :
System.out.println("该同学在2班");
break;
case 3 :
System.out.println("该同学在3班");
break;
default :
System.out.println("未查询到该同学班级");
}
}
}
输出结果为:
该同学在2班
未查询到该同学班级
break:
break是为了结束当前语句的执行,如果不加break,则switch语句在遇到满足的case后会继续向下执行,剩余的case不再进行判断而被自动判定满足条件,直到遇到break或者switch语句结束。例如:
public class firstesten {
public class firstesten {
public static void main(String[] args) {
int x = 3;
switch ( x ) {
case 1 :
System.out.println("该同学在1班");
break; // 有break
case 2 :
System.out.println("该同学在2班"); // 无break,但case不满足条件,故不执行输出
case 3 :
System.out.println("该同学在3班"); // case满足条件,无break,故以下case自动满足条件
case 4 :
System.out.println("该同学在4班"); // 上一个case无break,故当前case虽然不满足条件依然可以执行输出语句
case 5 :
System.out.println("该同学在5班"); // 上一个case无break,故当前case虽然不满足条件依然可以执行输出语句
break; // 遇到break,结束switch语句
default :
System.out.println("未查询到该同学班级");
}
}
}
输出结果为:
该同学在3班
该同学在4班
该同学在5班