大内高手社区

标题: Java switch case 语句 [打印本页]

作者: 程序员007    时间: 2021-9-23 15:44
标题: Java switch case 语句
  switchcase语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
  一、语法
  switchcase语句语法格式如下:
[Java] 纯文本查看 复制代码
switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

  switchcase语句有如下规则:
  switch语句中的变量类型可以是:byte、short、int或者char。从JavaSE7开始,switch支持字符串String类型了,同时case标签必须为字符串常量或字面量。
  switch语句可以拥有多个case语句。每个case后面跟一个要比较的值和冒号。
  case语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
  当变量的值与case语句的值相等时,那么case语句之后的语句开始执行,直到break语句出现才会跳出switch语句。
  当遇到break语句时,switch语句终止。程序跳转到switch语句后面的语句执行。case语句不必须要包含break语句。如果没有break语句出现,程序会继续执行下一条case语句,直到出现break语句。
  switch语句可以包含一个default分支,该分支一般是switch语句的最后一个分支(可以在任何位置,但建议在最后一个)。default在没有case语句的值和变量值相等的时候执行。default分支不需要break语句。
  switchcase执行时,一定会先进行匹配,匹配成功返回当前case的值,再根据是否有break,判断是否继续输出,或是跳出判断。
  二、实例
  Test.java文件代码:
[Java] 纯文本查看 复制代码
public class Test {
   public static void main(String args[]){
      //char grade = args[0].charAt(0);
      char grade = 'C';

      switch(grade)
      {
         case 'A' :
            System.out.println("优秀");
            break;
         case 'B' :
         case 'C' :
            System.out.println("良好");
            break;
         case 'D' :
            System.out.println("及格");
            break;
         case 'F' :
            System.out.println("你需要再努力努力");
            break;
         default :
            System.out.println("未知等级");
      }
      System.out.println("你的等级是 " + grade);
   }
}

  以上代码编译运行结果如下:
[Java] 纯文本查看 复制代码
良好
你的等级是 C

  如果case语句块中没有break语句时,JVM并不会顺序输出每一个case对应的返回值,而是继续匹配,匹配不成功则返回默认case。
  Test.java文件代码:
[Java] 纯文本查看 复制代码
public class Test {
   public static void main(String args[]){
      int i = 5;
      switch(i){
         case 0:
            System.out.println("0");
         case 1:
            System.out.println("1");
         case 2:
            System.out.println("2");
         default:
            System.out.println("default");
      }
   }
}

  以上代码编译运行结果如下:
 
[Java] 纯文本查看 复制代码
default

  如果case语句块中没有break语句时,匹配成功后,从当前case开始,后续所有case的值都会输出。
  Test.java文件代码:
[Java] 纯文本查看 复制代码
public class Test {
   public static void main(String args[]){
      int i = 1;
      switch(i){
         case 0:
            System.out.println("0");
         case 1:
            System.out.println("1");
         case 2:
            System.out.println("2");
         default:
            System.out.println("default");
      }
   }
}

  以上代码编译运行结果如下:
[Java] 纯文本查看 复制代码
1
2
default

  如果当前匹配成功的case语句块没有break语句,则从当前case开始,后续所有case的值都会输出,如果后续的case语句块有break语句则会跳出判断。
  Test.java文件代码:
[Java] 纯文本查看 复制代码
public class Test {
   public static void main(String args[]){
      int i = 1;
      switch(i){
         case 0:
            System.out.println("0");
         case 1:
            System.out.println("1");
         case 2:
            System.out.println("2");
         case 3:
            System.out.println("3"); break;
         default:
            System.out.println("default");
      }
   }
}

  以上代码编译运行结果如下:
[Java] 纯文本查看 复制代码
1
2
3







欢迎光临 大内高手社区 (http://bbs.tedu.cn/) Powered by Discuz! X3.4