首页 > 编程笔记

Java switch case用法详解

Java 中除了 if else 语句,switch case 也可以完成流程控制。

与 if 不同的是,switch case 只能完成等值判断,即条件如果是判断两个值是否相等,可以使用 switch case,如果是比较两个值的大小关系,则不能使用 switch case。

此外,switch 支持 int、short、byte、char、枚举、String 数据类型的判断,不支持 boolean 类型。

switch case 语句的基本语法如下:
switch(变量){
case 值1:
    代码1;
    break;
case 值2:
    代码2;
    break;
......
default:
    代码n;
    break;
}
case 判断变量是否等于某个值,default 表示所有 case 都不成立的情况下所执行的代码。

用 if else 来类比,等同于
if(变量==值1){
    代码1;
}
else if(变量==值2){
    代码2;
}
......
else{
    代码n;
}

【实例】小明参加马拉松比赛,获得第 1 名奖励 2000 元,获得第 2 名奖励 1000 元,获得第 3 名奖励 500 元,否则没有奖励。请分别用 if else 和 switch case 实现这一场景。
public class Test {
   public static void main(String[] args) {
      int placing = 1;
      if(placing == 1){
         System.out.println("奖励2000元");
      }else if(placing == 2){
         System.out.println("奖励1000元");
      }else if(placing == 3){
         System.out.println("奖励500元");
      }else{
         System.out.println("没有奖励");
      }

      switch (placing) {
      case 1:
         System.out.println("奖励2000元");
         break;
      case 2:
         System.out.println("奖励1000元");     
         break;
      case 3:
         System.out.println("奖励500元");
         break;
      default:
         System.out.println("没有奖励");
         break;
      }
   }
}
运行结果为:

奖励2000元
奖励2000元


需要注意的是,每一个 case 语句必须要跟 break,表示结束当前的代码块,如果不跟 break,则从当前的 case 语句起,后面所有的 case 判断都失效,会直接执行对应的代码块。

举个简单的例子:
public class Test {
   public static void main(String[] args) {
      int placing = 1;
      switch (placing) {
      case 1:
         System.out.println("奖励2000元");
      case 2:
         System.out.println("奖励1000元");     
      case 3:
         System.out.println("奖励500元");
      default:
         System.out.println("没有奖励");
      }
   }
}
运行结果为:

奖励2000元
奖励1000元
奖励500元
没有奖励

可以看到,case 1 是成立的,但是因为没有加 break,所以后续的代码块全部执行而且不再进行判断。

推荐阅读