首先介绍一下switch语句的格式:
switch(需要判断的表达式){
case 常量1:
break;
case 常量2:
break;
…….
case 常量n:
break;
default:
}
1,需要判断的表达式
可能听的比较多的是:只能是整形或字符型。
但switch中需要判断的表达式的类型,其实不只是整形或字符型。
注意:switch中需要判断的表达式的类型 可以是int, short ,byte,char,String,枚举。
由于byte,short,char都可以隐式转换为int型,所以这些类型及其包装类型也是可以的。switch string的支持从JDK1.7版本开始,是背后做了一个转换,用哈希码进行比较,而哈希码是整形的值。
注意:switch语句无法作用在float,double,long以及他们的包装类型上。编译时会提示出错。
下面以String和int的包装类Integer为例:

public class J_02 
{
    public static void main(String[] args)
    {
        /*
        //byte数据范围
        byte b;
        b=(byte)(300);
        System.out.println(b);//44
        */

        double a=1,b=2,jg=0;
        String c="+";
         switch(c)
          {
           case "+" : jg=a+b;
              break;
           case "-" : jg=a-b;
              break;
           case "*" : jg=a*b;
              break;
           case "/" : jg=a/b;
              break;

          }
         System.out.println("jg1:"+jg);

         Integer i=new Integer(5);
         switch(i)
          {
           case 1: jg=a+b;
              break;
           case 2: jg=a-b;
              break;
           case 3: jg=a*b;
              break;
           case 4: jg=a/b;
              break;
           default:jg=i;  
          }
         System.out.println("jg2:"+jg);
    }
}

运行结果:

java swich java switch case范围_包装类


2,default不是必须的,可写可不写,位置随意,根据个人需要而定。如果放在case语句之前记得加上break ,否则会继续执行default语句之后的语句,不管case的条件是否满足,都会执行,因为他会把这个条件当成之前满足的那个条件中的内容,所以直到遇到break才会退出,终止这个条件。

例如:

double a=1,b=2,jg=0;
Integer i=new Integer(5);
 switch(i)
          {
           default:jg=i;
           case 1: jg=a+b;
              break;
           case 2: jg=a-b;
              break;
           case 3: jg=a*b;
              break;
           case 4: jg=a/b;
              break;


          }
         System.out.println("jg2:"+jg);

则会向下执行:jg=a+b;遇到break后跳出switch语句。
3,case后必须要跟常量!常量即不能改变的量。如:字符,字符串,数字。
也可以是用final修饰的变量,因为用final修饰后就不能再改变啦!
例如:

final int f=5; 
         Integer i=new Integer(5);
         switch(i)
          {
           default:jg=i;
           case 1: jg=a+b;
              break;
           case 2: jg=a-b;
              break;
           case 3: jg=a*b;
              break;
           case 4: jg=a/b;
              break;
           case f: jg=f;
              break;          
          }

注意case后所跟的常量类型要和表达式的结果类型一致。
4,break。不加break会执行switch语句中当前语句之后的语句,直到遇到break或所有条件都不满足之后跳出switch语句。

思考题:

以下代码运行时得到什么打印结果?

int i = 4; 
 switch (i) { 
 default: 
 System.out.println(“default”); 
 case 0: 
 System.out.println(“zero”); 
 break; 
 case 1: 
 System.out.println(“one”); 
 case 2: 
 System.out.println(“two”);}
//default 
 Zero