switch...case用法

来源:互联网 发布:飞天侠淘宝客源码 编辑:程序博客网 时间:2024/06/17 22:48

switch-case语句的标准用法:

switch(表达式){    case 常量表达式1:    语句1;    break;        case 常量表达式2:    语句2;    break;    ......       default:   语句;   break; } 
例如
int i=3; switch(i) {     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("default");     break; }

输出结果是:3


执行流程为:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句,然后退出switch语句,程序流程转向开关语句的下一个语句


注意:

1、default就是如果没有符合的case就执行它,default并不是必须的。
2、case后的语句可以不用大括号.
3、switch语句的判断条件可以接受int、byte、char、short,不能接受其他类型。

     原因是在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。

4、一旦case匹配,如果没有break,就会顺序执行后面的程序代码,而不管后面的case的表达式是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句。所以,通常来讲,break是必须写的。否则如下

public class Test7 {     public static void main(String[] args)     {        int i=5;        switch(i)        {              case 1:               System.out.println("one");              case 10:               System.out.println("ten");              case 5:               System.out.println("five");                  case 3:               System.out.println("three");              default:               System.out.println("other");        }    }}


结果是:

five

three

other


特殊使用:

特殊1:不是完全没有break

int year=2005;int month=3;int day;switch(month){   case 1:   case 3:   case 5:   case 7:   case 8:   case 10:   case 12:         day=31;         break;   case 2:         day=28;         break;   case 4:   case 6:   case 9:   case 11:          day=30;          break;}

结果是:day=31

特殊2:default的位置

int i=1;switch(i){   case 1:       System.out.println(1);    default:       System.out.println("default");   case 2:       System.out.println(2);       break;   case 3:       System.out.println(3);       break;} 

结果是:1
                default
                2


0 0
原创粉丝点击