switch...case用法

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值