switch case语句用法详解

2023-05-16

switch “开关”的意思,是一种“选择”语句,它用法非常简单。switch 是多分支选择语句。说得通俗点,多分支就是多个 if语句的组合。从功能上说,switch 语句和 if 语句完全可以相互取代。但从编程的角度,它们又各有各的特点,所以至今为止也不能说谁可以完全取代谁。

当嵌套的 if 比较少时(三个以内),用 if 编写程序会比较简洁。但是当选择的分支比较多时,嵌套的 if 语句层数就会很多,导致程序冗长,可读性下降。因此用 switch 语句来处理多分支选择。所以 if 和 switch 可以说是分工明确的。在很多大型的项目中,多分支选择的情况经常会遇到,所以 switch 语句用得还是比较多的。

switch的一般形式如下:

		switch(表达式)
		{
		case 常量表达式1:语句1;
		case 常量表达式2:语句2;
		...
		case 常量表达式n:语句n;
		default:语句;
		}            

说明:

1) switch() 括号内的“表达式”必须是整数类型或者可以转换为整型的数值类型。比如:byte、short、int、char、也可以直接是整数或字符常量还有枚举,哪怕是负数都可以。需要强调的是:float、double、long和String类型是不能作用在switch语句上的。

2) switch 下的 case 和 default 必须用一对大括号{}括起来。

3) 当switch后面括号内“表达式”的值与某个case后面的“常量表达式”的值相等时,就执行此case后面的语句。执行完一个case后面的语句后,流程控制转移到下一个case继续执行。如果你只想执行这一个case语句,不想执行其他case,那么就需要在这个case语句后面加上break,跳出switch语句。
switch是“选择”语句,不是“循环”语句。因为break一般给我们的印象是跳出“循环”,但break还有一个用法,就是跳出switch。

4) 若所有的 case 中的常量表达式的值都没有与 switch 后面括号内“表达式”的值相等的,就执行 default 后面的语句,default 是“默认”的意思。如果 default 是最后一条语句的话,那么其后就可以不加 break,因为既然已经是最后一句了,则执行完后自然就退出 switch 了。

5) 每个 case 后面“常量表达式”的值必须互不相同,否则就会出现互相矛盾的现象,而且这样写造成语法错误。

6) “case常量表达式”只是起语句标号的作用,并不是在该处进行判断。在执行 switch 语句时,根据 switch 后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。

7) 各个 case 和 default 的出现次序不影响执行结果。但从阅读的角度最好是按字母或数字的顺序写。

8) 当然你也可以不写 default 语句,就跟 if…else 最后不要 else 语句一样。但最好是加上,后面可以什么都不写。这样可以避免别人误以为你忘了进行 default 处理,而且可以提醒别人 switch 到此结束了。
default 后面可以什么都不写,但是后面的冒号和分号千万不能省略,省略了就是语法错误。

例:

public class MultipleBranch {
	
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入您想去的楼层:");
		int storey = scanner.nextInt();
		switch (storey) {
		case 1:
			System.out.println("1层开!\n");
			break;
		case 2:
			System.out.println("2层开!\n");
			break;
		case 3:
			System.out.println("3层开!\n");
			break;
		default:
			System.out.println("该层不存在! 请重新输入\n");
		}
	}
	
}            

转载请注明出处:BestEternity亲笔。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

switch case语句用法详解 的相关文章

  • Cypher Neo4J - 使用 MERGE 进行 CASE 表达

    我正在尝试根据特定条件在 Cypher 中实现逻辑 CASE声明 我会创建一些节点和关系 代码如下 MATCH g Game PLAYER gt u User r1 AT gt b1 Block NEXT gt b2 Block WHERE
  • 优化SQL Server WHERE子句条件中的CASE WHEN语句

    我正在重写我的 sql 以减少执行成本 并想知道是否有一种有效的方法来编写 WHERE 条件中使用的以下 CASE WHEN 语句 SELECT l tg FROM RefTable tg InputTbl l WHERE tg areas
  • 带 CASE 条件和 SUM() 的 SELECT 查询

    我目前正在使用这些sql语句 我的表有 CPaymentType 字段 其中包含 现金 或 支票 我可以通过执行 2 个 SQL 语句来汇总付款金额 如下所示 在这种情况下 用户甚至不会注意到执行2条sql语句或仅执行1条sql语句时的速度
  • switch case 语句内的表达式

    我正在尝试创建一个 switch 语句 但我似乎无法使用被评估的表达式 而不是设置的字符串 整数 我可以使用 if 语句轻松做到这一点 但 case 应该会更快 我正在尝试以下操作 function reward amount var re
  • SQL 将值更改为大写或小写

    如何使sql select语句中的字段全部大写或小写 Example 从人中选择名字 如何使名字始终返回大写 同样始终返回小写 SELECT UPPER firstname FROM Person SELECT LOWER firstnam
  • T-SQL Where 子句 Case 语句优化(StoredProc 的可选参数)

    我已经和这个问题斗争了一段时间了 我有一个存储过程 它接受 3 个用于过滤的参数 如果传入特定值 我想对其进行过滤 如果传入 1 则全部给我 我尝试过以下两种方法 第一种方式 SELECT field1 field2 etc FROM my
  • MySql 中的考勤报告

    我想编写一个查询来生成员工的出勤报告 首先 我将告诉您如何将员工的存在存储在我的数据库中 我有以下表格 Employee Table with Columns emp id emp Name Joining Date 1 john 11 0
  • SQL Server 条件 JOIN 语句

    是否可以执行以下操作 IF a 1234 THEN JOIN ON TableA ELSE JOIN ON TableB 如果是这样 正确的语法是什么 我认为您所要求的通过加入Initial两个表Option A and Option B
  • 通过 Django 管理站点添加数据时更改大小写(大写/小写)

    我正在配置我的新项目的管理站点 我有点怀疑我应该怎么做 通过管理站点添加数据时点击 保存 所有内容都转换为大写 编辑 好的 我知道 upper 属性 并且我做了一个视图 我知道该怎么做 但我想知道管理站点上是否有任何可用于字段配置的属性 P
  • SQL Case 语句在 where 子句中指定条件?

    我有以下查询 SELECT FROM dbo tblOrders o WHERE o OrderId IN SELECT Value FROM dbo udf GenerateVarcharTableFromStringList Order
  • Common Lisp 案例和引用元素

    我正在用 CL 编写一个地下城爬行游戏 但在处理案例表单时遇到了问题 两件事情 Common Lisp 抱怨Duplicate keyform QUOTE in CASE statement make instance cl rogue t
  • C 中的 case 标签不会减少为整数常量?

    我正在开发一个游戏 我运行了我的代码并收到错误 case 标签不会减少为整数常量 我想我知道这意味着什么 但是我该如何解决它呢 这是我的代码 include
  • SQL查询where参数为null不为null

    我正在尝试执行 SQL 查询并根据参数是否为空或否动态构建 where 条件 我有这样的事情 SELECT tblOrder ProdOrder tblOrder Customer FROM tblOrder CASE WHEN Order
  • 如何在 MySQL CASE 表达式中使用“OR”条件?

    我有一个包含 CASE 表达式语句的过程 如下所示 BEGIN WHILE counter lt total DO CASE ranking WHEN 1 OR 51 OR 100 OR 167 THEN SET project name
  • MySQL 中的 CASE 性能?

    我想知道是否在 MySQL 查询中使用 CASE WHEN THEN 表达式对性能有负面影响吗 而不是使用 CASE 表达式 例如在 UPDATE 查询中 你总是有可能在你的程序中做出 if else 语句用 php python perl
  • MySQL CASE 是如何工作的?

    我知道 SQL 的CASE语法如下 CASE WHEN search condition THEN statement list WHEN search condition THEN statement list ELSE statemen
  • 存储过程中的 SQL case 语句

    我有一个包含 CASE 语句的 SQL Server 存储过程 但是 如果多个条件成立 我需要附加这些值 因此 如果某个特定记录有失效日期 And 超出里程 我希望这两个值都显示在不可归档原因柱子 我将如何实现这一目标 CASE WHEN
  • scala案例类问题

    我有两个关于 案例类的问题 可以用作 case head tail gt 它是如何工作的 意思是 Scala 用于将 List 实例与 case 类进行匹配的流程到底是什么 鉴于我有一个类 MyClass 带有运算符 op 我可以创建一个名
  • 如果所有情况都是真正的 PHP,如何处理这些情况

    我想知道是否有办法继续完成所有三种情况 如果它们都是真的 但是使用break 因为作为一个例子 如果第一种情况是真的 第二种情况是假的 第三种情况也是假的 而且我没有使用break 无论如何它都会进行 将strtotime更改为2014年1
  • SQL:使用 Case 语句对多个字段进行分组

    我正在尝试使用 CASE 语句编写 GROUP BY 子句 以便我可以根据查询中的参数值有条件地进行 GROUP BY 这是我正在使用的查询 显着缩短 我不断收到 RVPname 在选择列表中无效 因为它不包含在聚合函数或 GROUP BY

随机推荐

  • 18.app后端如何实现LBS

    移动互联网 xff0c 除了一直在线这个特点外 xff0c 还有一个重要特点 xff0c 能定位到手机的位置 查找附近的人 附近的餐馆等服务 xff0c 以及大量的o2o应用 都需要使用LBS Location Based Services
  • 19.最省钱的app发短信方法

    在创业团队中 xff0c 一个重要的原则是能省就省 xff0c 该花就花 xff0c 把银子用在刀刃上 现在的app xff0c 为了获取用户的社交关系 xff0c 需要用户的手机号注册 用手机号注册就涉及到一个发送短信验证码的问题 xff
  • 20.如何从app业务逻辑提炼api接口

    在app后端的工作中 xff0c 设计api是一个很考验设计能力的工作 在项目的初始阶段 xff0c 只知道具体的业务逻辑 xff0c 那怎么把业务逻辑抽象和提炼 xff0c 设计出api呢 xff1f 通过阅读本文 xff0c 可解答以上
  • 21.app后端如何高效更新内容

    在app的主页或通知栏 xff0c 经常需要通过api取最新的数据 那么 xff0c 怎么在这部分上做优化 xff0c 使获取内容的效率更高呢 xff1f 在本文中 xff0c 通过推拉和增量更新 xff0c 实现了一种高效获取数据的策略
  • 22.在创业公司中的成长

    在 app后端 qq群中 xff0c 经常被问到的一个问题 xff1a 怎么设计一个应付高并发的架构 诚然 xff0c 设计一个能应付百万流量的高并发架构 xff0c 是很令人兴奋的技术挑战 xff0c 但在创业公司中的成长 xff0c 难
  • 23.app后端如何架设文件系统

    现在app展现内容的形式多种多样的 xff0c 有文字 xff0c 图片 xff0c 声音 xff0c 视频等等 xff0c 其中文件占了一个很大的比重 随着app不断运营 xff0c 文件会越来越多 xff0c 占用的磁盘空间也不断增大
  • 24.从公众号筹集10万股份学到的商业化思维

    1 忽然间看到了卖公众号的股份的玩法 昨天 xff0c 在公众号 老鹰说 id joeytalks 看到了他要弄一个新的玩法 xff0c 卖公众号的股份 xff0c 熟人1000块一股 xff0c 陌生人2000块一股 当时不以为然 xff
  • 25.创业真的需要app吗?真的需要外包吗?

    两个星期前 xff0c 一名亲戚的朋友打算投入自己的二十多万元去搞个摄影社交app xff0c 问我有没有靠谱的外包推荐 xff0c 我赶紧劝住他 xff0c 现在app的成本已经非常高了 xff0c 初期的研发就要十几万 xff0c 加上
  • HarmonyOS鸿蒙的测试体验

    HarmonyOS 2 0手机开发者Beta公测招募 xff0c 申请开发者账号 xff0c 报名 xff0c 就可以抢先体验 除了抢先体验 xff0c 使用真机测试外 xff0c 使用模拟器也可以尝试体验 那测试人员可以使用HVD和Clo
  • 单点登录 Ucenter 分析

    原文 xff1a http blog csdn net ebw123 article details 9417231 首先我们先来了解下 Ucenter登录步骤 1 用户登录discuz xff0c 通过logging php文件中的函数u
  • 当Ucenter和应用通信失败

    http blog sina com cn s blog 775f158f010135uz html 失败是常见的 对于初次接触Ucenter的人来讲 xff0c 添加一个自己的应用最头疼的就是发现通信失败 如果要解决这个问题 xff0c
  • 26.app后端怎么架设推送服务

    推送服务已经是app的标配了 架设推送服务 xff0c 除了可以使用第三方服务商外 xff0c 也有大量的开源技术可以选择 现在推送主要分两块 xff0c android推送和ios推送 xff0c 在下面分别论述 xff1a 1 Andr
  • 27.app后端搭建聊天服务器的经历

    现在 xff0c 聊天功能已经成了社交app的标配了 但是 xff0c 众多web开发出生的程序员对聊天相关的服务的不了解 xff0c 带来了很多开发上的困扰 在这篇文章中 xff0c 根据下面3个方面 xff0c 谈谈聊天服务 1 聊天服
  • 29.满大街创业团队的年代,一不小心就被忽悠

    长期呆在创业团队中 xff0c 我人品不咋的 xff0c 遇到过各种坑人的项目和团队 下面讲讲3件坑人的事情 1 不靠谱的项目 在第二个创业项目失败后一个星期 xff0c 以前的UI andy忽然找上我 xff0c 有个老板想投资个项目 x
  • (转)cookie和session机制之间的区别与联系

    出处为中国JAVA手机网 lt www cnjm net gt http www cnjm net tech article1113 html 具体来说cookie机制采用的是在客户端保持状态的方案 它是在用户端的会话状态的存贮机制 xff
  • 30.因为绘画,我在豆瓣上认识了老婆

    导读 xff1a 这篇文章的上半部分 xff0c 是我2011年在豆瓣上发表的 五天学会绘画 书评 xff0c 我和老婆就相识于这个书评 后记部分 xff0c 是对绘画 xff0c 和用互联网方法找女友的一些思考 五天学会绘画 xff0c
  • 对太极拳中的“势”有所领悟

    文章标题 对太极拳中的 势 有所领悟 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 今天帮一个亲戚搬杂物 xff0c 从三楼的杂物房搬到一楼的花园 开始领悟 势 是搬一个很重
  • 本人写的Android上RSS阅读器简单介绍

    文章标题 本人写的 Android 上 RSS 阅读器简单介绍 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 个人博客 http blog csdn net newjueqi
  • 整合 ucenter 注册自动激活

    http my oschina net banbo blog 311691 应用整合 UCenter xff0c 同步注册到 Discuz 的用户 xff0c 在 Discuz 登录时得手动激活 xff0c 用户体验很不好 xff0c 不过
  • switch case语句用法详解

    switch 开关 的意思 xff0c 是一种 选择 语句 xff0c 它用法非常简单 switch 是多分支选择语句 说得通俗点 xff0c 多分支就是多个 if语句的组合 从功能上说 xff0c switch 语句和 if 语句完全可以