java中switch关键字介绍

  一直对switch语句的使用不是很熟悉,最近空下来整理一下。
switch语句格式如下:
switch(变量) {
  case 值 1 : 语句; break;
  case 值 2 : 语句; break; 
  case 值 3 : 语句; break; 
  case 值 4 : 语句; break; 
  case 值 5 : 语句; break; 
  default:语句; 
}

一、switch支持的数据类型:

       JDK1.5之前,switch循环只支持char、byte、short、int四种数据类型。
       JDK1.5开始,switch循环中增加了枚举类与byte short char int的包装类,对四个包装类的支持是因为java编译器在底层手动进行拆箱,而对枚举类的支持是因为枚举类有一个ordinal方法,该方法实际上是一个int类型的数值。JDK1.5之后支持的类型:char、byte、short、int 、Character、Byte、Short、Integer 、枚举。
       JDK1.7开始,switch循环支持String类型,但实际上String类型有一个hashCode算法,结果也是int类型.而byte short char类型可以在不损失精度的情况下向上转型成int类型.所以总的来说,可以认为switch中只支持int。JDK1.7之后支持的类型:char、byte、short、int 、Character、Byte、Short、Integer 、String、枚举。

       注:switch中,表达式不能为空,为空会抛出NullPointerException。case项即不能为空也不能重复,这两种情况都会出现编译错误。

二、switch语句格式介绍:
     1、case后的语句可以不用大括号括起来;
     2、每个 case 均以一个 break 结尾。这样可使 执行流程跳转至 switch 主体的末尾。这是构建 switch 语句的一种传统方式,但 break 是可选的。若省略 break,会继续执行后面的 case 语句中的代码,直到遇到 一个 break 为止,这种情况容易造成混淆,但也可以将这一特性善加利用。如:多个case共同处理同一块代码。
1)case语句中不加break关键字:

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

  以上代码输出的结果为:

i=2
i=3
i=4
i=default

2)case语句中加break关键字:

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

  以上代码输出的结果为:

i=2

   3、若case中没有发现相符的,就执行 default 语句。最后的 default 语句没有 break,因为执行流程已到了 switch 主体的末尾。不过如果考虑到编程风格方面的原因,也可以在 default 语句的末尾放置一个 break,虽然它并没有任何实际的用处。

第一种情况:
int i = 5;
switch (i){
  case 1:
    System.out.println("i=1");
  case 2:
    System.out.println("i=2");
  case 3:
    System.out.println("i=3");
  case 4:
    System.out.println("i=4");
  default:
    System.out.println("i=default");
}

第二种情况:
int i = 5;
switch (i){
  case 1:
    System.out.println("i=1");break;
  case 2:
    System.out.println("i=2");break;
  case 3:
    System.out.println("i=3");break;
  case 4:
    System.out.println("i=4");break;
  default:
    System.out.println("i=default");
}

以上代码中的两种情况,输出结果均为:

i=default

4、语句的执行结果也受default语句的位置有关(这是比较特殊的)。
  1) 第一种情况

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

以上代码的输出结果为:

i=default
i=3
i=4

2) 第二种情况

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

以上代码的输出结果为:

i=default

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值