`
liuwei1981
  • 浏览: 770268 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:160746
社区版块
存档分类
最新评论

50.Java分支语句—switch

 
阅读更多

在Java中,能够进行分支控制的语句,除了if以外,还有switch。

 

一个switch语句由一个控制表达式和一个由case标记描述的语句块组成。

 

和if不同,switch后面的控制表达式求出的值应该是整型而不是boolean类型,这点在初学时要尤为注意。从控制表达式的数据类型可以看出,if语句应用范围应该更为广泛常见,因为大部分的条件分值控制都是使用真假布尔运算来判断的,这在现实世界中也极为常见,比如前面的例子,今天的计划安排,是由天气情况来决定的,下雨,不下雨,很显然就是下雨情况的真假布尔判断。

 

可以这么说,switch能做的事情,if完全可以做到,你在写Java代码的时候,即使你不知道switch,也可以完成代码的编写。那么switch出现的意义是什么呢?

 

先别急,我们先把switch的用法搞清楚了。 

 

switch语句对控制表达式求得的值,决定了哪一个case分支将被执行。每一个case都用唯一的常量表达式或常量来标示,用于控制这个case是否必须被执行。

 

程序将执行到那些表达式值与控制表达式的值相匹配的case分支中。如果不存在这样的匹配,则将执行default后面的代码块。如果没有default标记(并不推荐这样做),则控制被传递到switch块后的第一条语句,也就是退出了switch块。


控制表达式必须是可以转化为byte、short、char或int类型的值的表达式。实际上switch的控制表达式接收是int类型的值,之所以能接收byte、short、char型的值,用前面提到的数据类型隐式转换就可以明白了,是Java根据实际情况,岁这几种数据类型做了类型转换,因为long不允许隐式转化为int,所以不能直接使用long型的数据值。

 

注意在每一个case标记的代码块中,最后都有一个break语句。这条语句具有重大的作用,如果没有这条语句,当与case分支相连续的代码块执行完毕后,将会继续运行与下一个case 分支相联系的代码块。一般情况下这与我们的初衷不符,但是有的情况下,也可以结合这种特性,简化我们的代码。看下面的这个示例: 

 

public class SwitchCase {
 public static void main(String args[]) {
  int n = 2;
  int result;
  switch (n + 1) {
  case 1: {
   System.out.println("Block A");
   result = n;
   break;
  }
  case 2: {
   System.out.println("Block B");
   result = n * n;
   break;
  }
  case 3: {
   System.out.println("Block C");
   result = n * n * n;
   break;
  }
  case 4: {
   System.out.println("Block D");
   result = n % 4;
   break;
  }
  default:
   result = 0;
  }
  System.out.println("n=" + n + " result=" + result);
 }
}


在这个例子中,定义了一个整形变量n,并给它赋值2,在switch中,根据表达式“n+1”得到的整数值执行不同的代码块:1、2、3、4都定义了各自的执行方式,如果不是这些数,则将执行default中的语句,将变量“result”赋值为0。


编译并运行上面的程序,将得到如下的结果:
Block C
n=2 result=8


从执行结果中可以很清楚的看出,case 3后面的代码被执行了,它将result赋值为n*n*n运算后得到的值,也就是为2*2*2的值。


如果一个case分支打算执行与紧随其后的case语句相同的动作,那么在这个case分支中可以不用写任何的代码:
 switch(expr){
 case 0:
 case 1:
  statements;
  break;
 case 2:
  … …
在这里,case 0分支会执行和case 1分支一样的操作。

 

case相对于switch处理逻辑的入口,上面的这个示例的写法,相当于把0与1的这两个入口合并为一个逻辑了。在实际的编码情况中,这点也很常见,比如大月与小月的判断,大家可以试着写写这个判断逻辑。

 

最后总的来说,switch可以看做是一种特殊情况下的if语句,用来编写更加清晰,简明的分支语句,如果你的逻辑分支判断都是等值判断,并且判断的条件多于3个以上的话,switch就是更好的选择了。

 

if语句可以不但的嵌套,在else之后,可以继续跟进if-else语句,来完成多个复合的布尔判断分支语句。就拿遥控器操作来说,如果你按1键,进入一频道,按2键,进入2频道,按音量增大键,进行音量调节增大操作,以此类推。如果那if来写,就会出现n个if-else嵌套,无论编写,还是阅读,都难于处理维护。

 

比如:

 

if(key==1){

//操作

}else if(key==2){

//操作

}else if(key==3){

//操作

}....

else{

//操作

}

 

现在代码量不大,看起来还可以接受。那么如果其中的注释操作,换成真正的操作的话,这段代码量就很可观了,到时候在一对if-else中间“遨游”,你就会对这种写法痛恨不已了。

 

如果换成switch呢? 

 

switch(key){

  case 1:

  case 2:

  case 3:

  ...

  default:

 

}

 

当然不要忘了break处理,这样看起来,即使增加了处理逻辑代码,也比if-else看起来舒服多了吧。重点是代码的可读性和可维护性,这点在实际项目中是非常重要的。

分享到:
评论

相关推荐

    精通JavaJDK、数据库系统开发、Web开发.iso

    SwitchBreakTest.java 使用switch语句实现条件分支测试break功能 BreakAndContinue.java 测试break及continue语句功能 OddSum.java 使用for循环对1~99之间奇数求和 OddSum.java 测试switch语句与for循环...

    实验三-条件语句和分支语句

    在这个实验中,我们主要探讨了Java中的三种条件语句和分支语句:`if...else`语句、嵌套`if`语句以及`switch`语句。 1. **`if...else`语句**: `if...else`语句是最基础的条件判断,它基于一个布尔表达式的值来决定...

    Java程序设计:实验三 JAVA基本语法二.doc

    Java程序设计的实验三主要涉及到JAVA基本语法二的内容,包括if...else、switch...case分支语句、for、while、do-while循环和break、continue跳转语句等。下面是对本实验的详细解释和知识点总结: 一、if...else分支...

    Java-Java Switch语句详解教程

    Java Switch语句是Java编程语言中的一个控制流程结构,它提供了多路选择,允许程序根据变量的值执行不同的代码块。在Java中,Switch语句主要用于替代一系列的if...else if...else语句,使代码更加简洁、易读。本教程...

    java常用语句大全JAVA程式-自动贩卖机SWIJava程序设计报告TCH&CASE

    - **分支语句**:`if...else`, `switch...case`,用于根据不同条件执行不同代码块。其中,`switch...case`语句在给定标题中特别提到,通常用于多选项的情况判断,例如游戏中的不同玩家选择。 - **异常处理**:`try.....

    JAVA实验报告一,Java初级编程.docx

    - `switch`语句提供了一种更简洁的方式来处理多个可能的分支,如在抽奖程序中,根据用户输入的数字决定显示不同的奖项。 4. **数据类型**: - 在Java中,有基本数据类型如`int`用于存储整数,以及引用数据类型...

    第02章 Java编程基础 11 Switch分支语句

    Java编程基础中的Switch分支语句是程序控制流程中的重要元素,它提供了一种更简洁、更易读的方式来处理多条件分支。在Java中,Switch语句通常用于替代多个if...else if...else结构,尤其当有多个可能的选项时,...

    16.java流程控制语句.zip

    - **switch语句**:适用于枚举类型、字符、整型或字符串的多分支判断。其语法如下: ```java switch (expression) { case value1: // 当expression等于value1时执行的代码 break; case value2: // 当expression...

    Java switch case 语句.docx

    Java的switch case语句是一种控制流程结构,用于根据变量的值执行不同的代码块。它提供了一种更简洁的方式来替代多个if...else if...else语句。以下是对switch case语句的详细解释: 1. **基本语法**: switch语句...

    实验一 条件语句、循环语句的使用 2.switch 条件语句

    其次,`switch`条件语句是一种多分支选择结构,适用于多个可能的情况。它比连续的`if...else if...else`结构更简洁。在Java中,`switch`语句的基本形式如下: ```java switch (expression) { case value1: // 当...

    【IT十八掌徐培成】Java基础第02天-05.条件判断-分支语句.zip

    Java中的条件判断主要通过分支语句来实现,常见的分支语句有`if`、`if-else`、`switch`等。这些语句在编写逻辑密集型或决策性的代码时尤其重要。 1. **if语句**:这是最基础的条件判断结构,它由一个布尔表达式和一...

    java if语句和switch语句.pdf

    if 语句是 Java 中的条件分支语句。它能将程序的执行路径分为两条。if 语句的完整格式为:if (condition) statement1; else statement2;其中,if 和 else 的对象都是单个语句(statement),也可以是程序块。条件 ...

    Java程序设计基础:if单分支语句.pptx

    if单分支语句 目录 课程导入 掌握if单分支结构的语法 掌握if单分支结构的使用 什么情况下使用if单分支结构 问题: 如果圆半径大于等于0,计算圆的面积。 如果小明的Java考试成绩大于95分,就能获得一张积分卡作为...

    Java中的Switch语句

    总结,Java中的`switch`语句为程序员提供了处理多分支逻辑的有效工具,通过合理使用它可以提高代码的可读性和可维护性。在实际开发中,应根据具体情况灵活运用,并注意保持代码的简洁性和清晰度。

    Java判断题.pdf

    9. 多分支语句switch(…)括号中的表达式返回值类型可以是所有整型类型,包括char类型。 10. 强制类型转换运算符的功能是将一个表达式的类型转换为指定的类型。 11. 类中定义的方法可以定义在类体外。 12. 实例...

    javaif语句和switch语句.pdf

    if语句是Java中最基础的条件分支结构,它基于一个布尔表达式的值来决定执行哪部分代码。基本的if语句格式如下: ```java if (condition) { // 当条件为真时执行的代码 } else { // 当条件为假时执行的代码 } ``` ...

    4-Java分支、循环语句

    首先,我们来探讨Java中的分支语句。最基础的是`if`语句,它用于在满足特定条件时执行一段代码。语法如下: ```java if (condition) { // 当条件为真时,执行这里的代码 } ``` 条件通常是一个布尔表达式,如果...

    实验一 条件语句、循环语句的使用 4.for循环语句

    实验一主要目标是让学习者深入理解并熟练运用条件语句和循环语句,特别是针对Java编程语言中的if条件语句、switch条件语句、while循环语句以及for循环语句。这些是程序设计中最基础且重要的控制结构,用于根据特定...

    java的控制语句(条件语句 循环语句 转移语句)

    switch 语句是 Java 中的一种多分支语句,用于根据表达式的值选择执行多个分支语句。switch 语句的格式如下: ``` switch (表达式) { case 常量 1: 语句 1; break; case 常量 2: 语句 2; break; ... default...

    javaif语句和switch语句[文].pdf

    `if`语句是一种条件分支语句,它根据一个布尔表达式的值来决定执行哪一段代码。基本的`if`语句结构如下: ```java if (condition) { // statement1 } else { // statement2 } ``` 这里的`condition`是一个返回...

Global site tag (gtag.js) - Google Analytics