返回顶部

Java switch case 语句

[复制链接]
程序员007Lv.9 显示全部楼层 发表于 2021-9-23 15:44:13 |阅读模式 打印 上一主题 下一主题
  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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

达内教育:成立于2002年。致力于面向IT互联网行业,培养软件开发工程师、测试工程师、系统管理员、智能硬件工程师、UI设计师、网络营销、会计等职场人才 达内使命:缔造年轻人的中国梦、缔造达内员工的中国梦 达内愿景:做管理一流的教育公司
  • 商务合作

  • 微信公众号

  • Powered by Discuz! X3.4 | Copyright © 2002-2021, 达内教育 Tedu.cn
  • 京ICP备08000853号-56 |网站地图 | 京公网安备 11010802029508号