Java学习笔记之switch多路选择

     switch关键字用于实现多路选择,根据选择因子进行不同的处理,格式如下:

switch (integral-selector) {
case integral-value1:statement;break;
case integral-value1:statement;break;
//...
default:statement;break;
}

       其中,integral-selector是一个能够产生整数值的表达式,switch将这个表达式的结果与每个integral-value相比较,若发现相符的,就执行相应的语句(单条或多条语句,其中并不需要括号);若没有发现相符的,则执行default语句。

       可以注意到每个case均已一个break结尾,这样就可以使流程跳转至switch主体的末尾,但break是可选的。若省略break,会继续执行后面的case语句,知道遇到一个break为止。尽管不想出现这种情况,但有时我们可能也

会用到这种特性。
int a = 2;
switch (a + 2) {
case 4:
System.out.println("case 4 is ok");
case 5:
System.out.println("case 5 is ok");
break;
case 6:
System.out.println("case 6 is ok");
break;
// ...
default:
break;
}

output:

case 4 is ok

case 5 is ok

从这个例子我们可以看到有无break的区别。

integral-selector可以有三种选择:

a.integral-selector为整数表达式

   整数表达式只能是两种类型,char或者int型

char a='a';
switch (a + 2) {
case 'c':
System.out.println("case c is ok");
case 'd':
System.out.println("case d is ok");
break;
case 'e':
System.out.println("case e is ok");
break;
// ...
default:
break;
}

output:

case c is ok

case d is ok

b.与enum类型协调工作(Java SE5之后加入的特性

enum Season {
Spring, Summer, Autumn, Winter
}
Season season = Season.Autumn;
switch (season) {
case Spring:
System.out.println("The season is spring!");
break;
case Summer:
System.out.println("The season is summer!");
break;
case Autumn:
System.out.println("The season is autumn!");
break;
case Winter:
System.out.println("The season is winter!");
break;
default:
break;
}

output:The season is autumn!

c.integral-selector为字符串(Java SE 7加入的新特性)

String name = "xingfeng";
switch (name) {
case "wang":
System.out.println("Welcom,wang");
break;
case "yan":
System.out.println("Welcome,yan");
break;
case "xingfeng":
System.out.println("Welcome,xingfeng");
break;
default:
break;
}

output:Welcome,xingfeng

总结:

      1.搞清楚有break和无break的区别,有break就会直接跳出switch语句,无break就算匹配到了之后还是会继续向下执行直至遇到break。

      2.integral-selector只能为int或char的整数类型。

      3.Java SE 5之后,switch可以与enum类型协调工作。

      4.Java SE 7之后,switch可以与字符串配合使用。

你可能感兴趣的:(Java之关键字switch)