Java 中switch-case的注意地方

本文详细解析Java中switch语句的使用方法,包括switch表达式的类型限制、case标签的合法值及其注意事项,并通过示例代码说明如何避免遗漏break语句导致的问题。

下面是switch的简单写法:
switch(A){
case B;
}
A部分中的值必须是int型的,或者是能够自动进行饮试转换成int型的表达式。也就是说A部分可以是byte/short/char/int型的。
其次要强调的是该程序中B部分的值必须是单个byte/short/char/int型的值,或者是final型的变量。
但是final型的变量也是有要求的,也即是它必须是编译时的常量,怎么讲呢,看下面的程序段:
final int a = 0;
final int b;
第二个语句就是在编译时不能够被识别出值的变量,因为它没有初始化,当然,这条语句也是错误的。
所以总结case后的值可以是常数值或final型的值。


再看下面的程序段:


public class TestSwitch {
 public static void main(String[] args){
  byte a = 11;
  switch(a){// C
  case 11 : System.out.println(" 11 "); break;
  case 225 : System.out.println(" 11 "); break;// D
  }
 }
}


该代码正确吗?答案是否定的。虽然在 C 处是合法的也即是byte型的a值可以出现在switch中,但是 D处的语句也即是第二个case后的值是225大小超过了byte的范围,所以是错误的。再就是case后的值不能出现重复。因此在使用中要注意。


=====================
再就是在使用switch-case中最容易忽视的就是忘记在每个case后处理完后忘记写上break;语句。那它带来的后果是什么呢,下面小程序段会告诉你:
public class TestSwitchCase {
 public static void main(String[] args){
  byte a = 2;
  switch(a){
  case 1 : System.out.println(" A ");
  case 2 : System.out.println(" B ");
  case 3 : System.out.println(" C ");
  case 4 : System.out.println(" D ");
                default : System.out.println(" default ");

  }
 }
}
=========输出结果为:
 B
 C
 D
 default
--------------------------
看到了吗?连default都执行,注意结束符break;就OK了。


看起来语法虽然简单,但是越简单的东西,越容易忽视,而且一旦在大的项目中出现错误,就不好找出什么地方出的错,到时候就.......呵呵。

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/wygzky/archive/2008/11/08/3254109.aspx

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值