switch 语句包被划分为一种选择语句。根据整数表达的值,进行选择操作。语句基本格式如下:
switch (interal-selector) {
case integral-value1: statement; break;
case integral-value2: statement; break;
case integral-value3: statement; break;
case integral-value4: statement; break;
case integral-value5: statement; break;
default: statement;
}
注意点如下:
- interal-selector 即为整数表达式的值,他的意思是 interal-selector 本身是一个整数,或者经过运算之后产生一个整数。
- break 是可选的,如果没有 break 则语句会继续执行,直到遇到 break 或者运行到结尾
- default 表示在没有匹配的情况下默认执行的语句,由于已经是最后执行的所以不需要 break 语句,但是如果想写也可以
注意点一
interal-selector (或成为选择银子)需为整数表达式。很容易理解,整数表达式可以是 int 以及 int 的分装类 Integer。 同时由于, byte,short,char都可以隐含地转换成 int,所以他们也可以作为选择因子。
而float,double,long,String 则同理不可作为选择因子。
注意点二
JavaSE5 中引入新特性枚举类型,可以减弱这种限制。
创建一个枚举类型
public enum Season {
Spring,Summer,Autumn,Winter
}
枚举类型作为选择因子
public class MainTest {
Season season;
public MainTest(Season season) {
this.season = season;
}
public void describe() {
switch (season) {
case Spring:
System.out.println("Today is" + " " + season);
break;
case Summer:
System.out.println("Today is" + " " + season);
break;
case Autumn:
System.out.println("Today is" + " " + season);
break;
case Winter:
System.out.println("Today is" + " " + season);
break;
default:
System.out.println("The end of the world ");
}
}
public static void main(String[] args) {
MainTest spring = new MainTest(Season.Spring);
MainTest summer = new MainTest(Season.Summer);
spring.describe();
summer.describe();
}
}
switch 语句需要在有限的可能集合中进行选择,而 enum 则是我们自己创建的可能集合。
绝配!
注意点三
从JDK 7开始, 我们可以针对字符串使用switch条件语句了;在JDK 6或者之前的版本,我们则不能使用针对字符串的switch条件语句。
switch (season) {
case "aa":
System.out.println("Today is" + " " + season);
break;
case "bb":
System.out.println("Today is" + " " + season);
break;
case "cc":
System.out.println("Today is" + " " + season);
break;
default:
System.out.println("The end of the world ");
}