switch语句的运用

来源:互联网 发布:java nio原理 编辑:程序博客网 时间:2024/05/17 20:31
当选择结构的分支越多时,if-then-else语句就会变得越来越难以看懂。Java提供了另一种多分支语句—switch语句。switch语句是多分支的开关语句,其语法格式如下。 switch(表达式){ case 常量表达式1:语句组1; [ break;] case 常量表达式1:语句组1; [ break;] … case 常量表达式1:语句组1; [ break;] default:语句块n }
说明:
 switch后面的表达式值的数据类型可以是字符型(char)、字节型(byte)、短整型(short)或者整型(int)等原始数据类型,但是不可以是布尔型(boolean)、长整型(long)、浮点型(float、double)。
 switch后面的表达式值的数据类型,还可以是枚举类型(Enum),或者原始数据类型的包装类(Character、Byte、Short、Integer)。关于枚举类型和原始数据类型的包装类,在后面章节详细讲解。从JDK7开始,switch后面的表达式值的数据类型也支持字符串(String)类型。
 case后面的常量表达式的值的类型,必须与switch后面的表达式值的类型相匹配,而且必须是常量表达式或直接字面量。
 break语句会中断switch语句的执行,即结束switch语句。break语句可以省略。如果省略,那么程序会按顺序执行switch中的每一条语句,直到遇到右大括号或break为止。
 语句块可以是一条语句或多条语句,但不需要使用大括号括起来。
 case分支语句和default语句都不是必需的,可以省略。
switch语句执行的过程如下。
(1)将switch表达式的值与各个case后面的常量表达式的值一一进行比较。
(2)当表达式的值与某个case分支的值相等时,程序执行从这个case分支开始的语句组。
(3)如果没有任何一个case分支的值与switch表达式的值相匹配,并且switch语句含有default分支语句,则程序执行default分支中的语句组。

(4)直到遇到break语句或右大括号,结束switch语句。

 class Demo2{ 
public static int getMonthNumber(String month){ 
int monthNumber=0; 
if(month==null){ 
return monthNumber;
}
switch(month.toLowerCase()){
case "一月":
monthNumber=1;
break;
case "二月": 
monthNumber=2; 
break;
case"三月":
monthNumber=3;
break;
case "四月":
monthNumber=4;
break;
case "五月":
monthNumber=5;
break;
case "六月":
monthNumber=6;
break;
case "七月":
monthNumber=7;
break;
case "八月":
monthNumber=8;
break;
case "九月":
monthNumber=9;
break;
case "十月":
monthNumber=10;
break;
case "十一月":
monthNumber=11;
break;
case "十二月":
monthNumber=12;
break;
default:
monthNumber=0;
break;
}
return monthNumber;
}
public  static void main(String[] args){
String month="八月";
int returnedMonthNumber=Demo2.getMonthNumber(month);
   
if(returnedMonthNumber==0){
  System.out.println("无效的月份");
  }
 else{
  System.out.println(returnedMonthNumber);
  }
}
}

0 0