switch语句概述

switch语句格式:

switch(表达式){
  case 常量1 :
  语句体1;
  break;
  case 常量2 :
  语句体2;
  break;
  case 常量3 :
  语句体3;
  break;
  ……
default:
语句体;
}

switch语句注意事项

单词解释:case 情况,break 打断/结束,default 默认
switch语句表达式:

表达式支持的数据类型:
  • jdk1.5之前只支持 byte、short、int、char类型
  • jdk1.5时支持枚举类型
  • jdk1.7时支持String类型
    总而言之现在的switch后的小括号里的表达式支持byte、short、int、char、枚举、String,这些类型的数据。
case语句注意事项
  • case 后面只能跟常量,并且数据类型要和表达式里的数据类型一致。
  • 每条语句体的后面要跟一个break语句,否则会出现case穿透。
  • 如果该条case语句在末尾的default语句前面,可以不加break。
default语句注意事项
  • default语句可以放到任意的位置,都是最后执行,但是要注意的是如果default语句不是放到最后面,那最后一条case语句要加上break
什么是case穿透

先看下面两种代码的输出结果

class Test {
  public static void main (String[] args){
      int a = 4;
      switch(a) {
      case 1 :
            System.out.println("一月份");
      break;
      case 4 :
            System.out.println("4月份");
      break;
      case 5 :
            System.out.println("5月份");
      break;
      default:
             System.out.println("请重新输入:");           
       }
  }
}

我们都知道上诉代码输出的结果为:

  • 四月份
    那么我们看下面这个代码
class Test {
  public static void main (String[] args){
      int a = 4;
      switch(a) {
      case 1 :
            System.out.println("一月份");
      break;
      case 4 :
            System.out.println("4月份");
      case 5 :
            System.out.println("5月份");
      break;
      default:
             System.out.println("请重新输入:");           
       }
  }
}

上面这个代码输出的结果为:

  • 4月份
  • 5月份
    为什么会这样呢?-- 因为这就是case语句后没有跟break语句,就发生了case穿透,执行case 4语句以后因为没有break语句,则会继续往下执行,执行case 5语句后遇到break语句则终止执行。
case穿透的利用

多个情况如果是相同的执行逻辑时,我们就可以使用,比如让你输入一个月份来判断是四季里的哪个季节我们就可以利用case穿透

import java.util.Scanner;
class Test {
  public static void main(String[] args){
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入要查询的月份:");
  int i = nextInt();
  switch(i){
  case 3:
  case 4:
  case 5:
    System.out.println("这个月份的季节为春天!");
  break;
   case 6:
   case 7:
   case 8:
    System.out.println("这个月份的季节为夏天!");
  break;
   case 9:
   case 10:
   case 11:
    System.out.println("这个月份的季节为秋天!");
  break;
   case 12:
   case 1:
   case 2:
    System.out.println("这个月份的季节为冬天!");
  break;
  default:
    System.out.println("请输入正确的月份!");
  }
 }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容