Java基础篇:switch语句

本文详细介绍了Java中的switch语句,包括其语法、执行流程以及如何与case和default语句配合使用。通过示例代码展示switch在多路分支中的应用,并探讨了省略break语句的情况及其在实际编程中的意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

switch语句是Java的多路分支语句。它提供了一种基于一个表达式的值来使程序执行不同部分的简单方法。因此,它提供了一个比一系列if-else-if语句更好的选择。switch语句的通用形式如下:

switch (expression) { 
case value1: 
// statement sequence 
break; 
case value2: 
// statement sequence 
break; 
. 
. 
. 
case valueN: 
// statement sequence 
break; 
default: 
// default statement sequence 
}

表达式expression必须为byte,short,int或char类型。每个case语句后的值value必须是与表达式类型兼容的特定的一个常量(它必须为一个常量,而不是变量)。重复的case值是不允许的。
switch语句的执行过程如下:表达式的值与每个case语句中的常量作比较。如果发现了一个与之相匹配的,则执行该case语句后的代码。如果没有一个case常量与表达式的值相匹配,则执行default语句。当然,default语句是可选的。如果没有相匹配的case语句,也没有default语句,则什么也不执行。
在case语句序列中的break语句将引起程序流从整个switch语句退出。当遇到一个break语句时,程序将从整个switch语句后的第一行代码开始继续执行。这有一种“跳出” switch语句的效果。
下面是一个使用switch语句的简单例子:

// A simple example of the switch. 
class SampleSwitch { 
 public static void main(String args[]) { 
  for(int i=0; i<6; i++) 
  switch(i) { 
  case 0: 
  System.out.println("i is zero."); 
  break;
  case 1: 
  System.out.println("i is one."); 
  break; 
  case 2: 
  System.out.println("i is two."); 
  break; 
  case 3: 
  System.out.println("i is three."); 
  break; 
  default: 
  System.out.println("i is greater than 3."); 
} 
} 
}

该程序的输出如下:

i is zero. 
i is one. 
i is two. 
i is three. 
i is greater than 3. 
i is greater than 3.

从中可以看出,每一次循环,与i值相配的case常量后的相关语句就被执行。其他语句则被忽略。当i大于3时,没有可以匹配的case语句,因此执行default语句。
break语句是可选的。如果你省略了break语句,程序将继续执行下一个case语句。有时需要在多个case语句之间没有break语句。例如下面的程序:

// In a switch, break statements are optional. 
class MissingBreak { 
 public static void main(String args[]) { 
  for(int i=0; i<12; i++) 
  switch(i) { 
  case 0: 
  case 1: 
  case 2: 
  case 3: 
  case 4: 
  System.out.println("i is less than 5"); 
  break; 
  case 5: 
  case 6: 
  case 7: 
  case 8: 
  case 9: 
  System.out.println("i is less than 10"); 
  break; 
  default: 
  System.out.println("i is 10 or more"); 
} 
} 
}

该程序产生的输出如下:

i is less than 5 
i is less than 5 
i is less than 5 
i is less than 5 
i is less than 5 
i is less than 10 
i is less than 10 
i is less than 10 
i is less than 10 
i is less than 10 
i is 10 or more 
i is 10 or more

正如该程序所演示的那样,如果没有break语句,程序将继续执行下面的每一个case语句,直到遇到break语句(或switch语句的末尾)。
当然该例子是为了示例而人为构造的,省略break语句在真实的程序中有许多实际的应用。为了说明它更现实的用法,让我们考虑下例对以前显示季节例子的重写。这个重写的版本使用switch语句来使程序的执行更高效。

// An improved version of the season program. 
class Switch { 
  public static void main(String args[]) { 
   int month = 4; 
   String season; 
   switch (month) { 
   case 12: 
   case 1: 
   case 2: 
   season = "Winter"; 
   break; 
   case 3: 
   case 4: 
   case 5: 
   season = "Spring"; 
   break; 
   case 6: 
   case 7: 
   case 8: 
   season = "Summer"; 
   break; 
   case 9: 
   case 10: 
   case 11: 
   season = "Autumn"; 
   break; 
   default: 
   season = "Bogus Month"; 
   } 
   System.out.println("April is in the " + season + "."); 
} 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值