《Java 7程序设计入门经典》一3.5 switch语句

简介: 本节书摘来自华章出版社《Java 7程序设计入门经典》一书中的第3章,第3.5节,作者 (美)Herbert Schildt Dale Skrien,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.5 switch语句

Java的第二个选择语句是switch语句。switch语句提供了多个分支。于是,它使程序可以在多个选项中做出选择。尽管一系列嵌套的if语句可以执行多路测试,在许多情况下,switch语句是更有效的方法。它像这样工作:表达式的值与一系列的常数比较。当找到一个选项时,执行与这个匹配项相关的语句序列。switch语句的一般形式为:
image
image

对于JDK 7以前的Java版本,控制switch的表达式expression必须是byte、short、int、char或枚举类型。(枚举类型在第13章介绍。)从JDK 7开始,表达式expression也可以是String类型。这意味着,Java的最新版本可以用字符串控制switch。(这个技术将在第5章描述String时介绍。)通常的情况是,控制switch的表达式仅仅是一个变量,而不是一个较大的表达式。
case语句指定的每个值都必须是一个常表达式(例如,字面量)。不允许出现相同的case选项。每个值的类型必须与控制表达式中的类型兼容。
如果没有case常量匹配表达式,就执行default语句对应的序列。default语句是可选的。如果没有出现default语句,且所有选项都不匹配,就不执行任何语句。如果找到一个匹配项,就执行与那个case相关的语句。直到出现break。对于case语句和default语句,会一直运行到switch语句才结束。
下面程序演示了switch的用法。
image
image

程序产生的输出如下所示:
image

可以看到,每次循环时,执行与变量i匹配的case常数相关的语句。其他语句不执行。当变量i大于等于5时,没有匹配的case语句,所以执行default语句。
从技术上说,break语句是可选的,尽管大多数的switch语句都会使用它。当在case的一系列语句序列中遇到break时,break语句使程序流从整个switch语句中退出,从switch外的下一个语句开始执行。但是,如果与case相关的语句序列没有以break结尾,那么当前case和之后case的所有语句都会执行,直到遇到break或switch结束。
例如,仔细学习以下程序。你能在看到输出前指出屏幕上会显示什么吗?
image
image

程序显示以下输出:
image

这个程序显示,如果没有出现break语句,就会继续执行下一个case语句。
还有空的case语句,如下面这个例子:
image

在这个程序片段中,如果变量i的值为1、2、3,就执行第一个println()语句。如果变量i的值是4,执行第二个println()语句。在这个例子中,case语句的省略在多个case子句共享代码时是很常见的。

相关文章
|
2月前
|
Java 测试技术 开发者
💡Java 零基础:彻底掌握 for 循环,打造高效程序设计
【10月更文挑战第15天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
125 63
|
1月前
|
Java
java switch case多个条件
通过本文的介绍,我们详细探讨了Java中 `switch case`语句的多种用法和优化方法。从基本语法到合并多个条件,再到使用枚举、常量和函数优化,`switch case`语句在Java编程中提供了一种灵活且高效的控制流方式。掌握这些技巧,能够编写出更加简洁、可读性强的代码,提高开发效率和代码质量。希望本文能为您在实际开发中提供有价值的参考和指导。
69 2
|
2月前
|
Java 测试技术 编译器
🎯Java零基础-Switch条件语句详解 🎯
【10月更文挑战第8天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
40 6
|
2月前
|
Java 程序员 编译器
在Java编程中,if-else与switch语句犹如武林高手的剑与刀
【10月更文挑战第3天】在Java编程中,if-else与switch语句犹如武林高手的剑与刀。本文通过示例展示如何巧妙运用这两种工具,提升代码效率与可读性。从精简if-else结构到高效使用switch语句,再到性能考量,帮助你在不同场景下做出最佳选择,让你的程序更加流畅高效。掌握这些技巧,你将在Java世界中游刃有余!
26 2
|
3月前
|
Java
java基础(1)逻辑控制if、switch
本文继续介绍了Java中的基础逻辑控制语句,包括if-else语句和switch语句。文章通过示例代码展示了if-else语句如何根据条件判断执行不同的代码块,以及switch语句如何根据变量的值执行不同的case分支。还提供了一个使用Scanner类从键盘获取输入,并根据输入的数字输出对应的星期日的示例。最后提到了如何在IDEA中格式化代码。
37 2
|
3月前
|
安全 Java
Java switch case隐藏用法
在 Java 中,`switch` 语句是一种多分支选择结构,常用于根据变量值执行不同代码块。除基本用法外,它还有多种进阶技巧,如使用字符串(Java 7 开始支持)、多个 `case` 共享代码块、不使用 `break` 实现 “fall-through”、使用枚举类型、使用表达式(Java 12 及以上)、组合条件以及使用标签等。这些技巧使代码更加简洁、清晰且高效。
53 1
|
4月前
|
Java C++ 开发者
if-else VS switch:谁才是Java条件判断的王者?
if-else VS switch:谁才是Java条件判断的王者?
48 3
|
4月前
|
Java 开发者
超实用!一文搞懂Java中if-else和switch的正确打开方式!
超实用!一文搞懂Java中if-else和switch的正确打开方式!
65 2
|
4月前
|
Java 开发者
别再傻傻分不清!Java if-else与switch的性能对比全解析!
别再傻傻分不清!Java if-else与switch的性能对比全解析!
77 1
|
4月前
|
Java
Java条件语句:if-else与switch的适用场景大起底
Java条件语句:if-else与switch的适用场景大起底
129 2