写在前面:本人是借助两本参考书自学的,其中部分例子和语句均是来自参考书。第一本:《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班