浅谈Switch与If

简介: 浅谈Switch与If

1.switch case与if else的效率问题

1.1 .switch case与if else的区别:

switch case会生成一个跳转表来指示实际的case分支的地址(可以理解成随机查找O(1)),而if...else却需要遍历条件分支直到命中条件(可以理解成二分查找O(logN))

1.2. switch case的优缺点

(1)switch case的优点:

当分支较多时,用switch的效率是很高的。因为switch是确定了选择值之后直接跳转到那个特定的分支.

(2)witch case的缺点:

  1. switch...case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch...case的空间利用率将变得很低。
  2. switch...case只能处理case为常量的情况。

1.3. if else的优缺点

(1)if else的优点:if else能应用于更多的场所以if else比较灵活。

(2)if else的缺点:if else必须遍历所以得可能值。

总结:

在选择分支较多时,选用switch…case结构会提高程序的效率,但switch不足的地方在于只能处理字符或者数字类型的变量,if…else结构更加灵活一些,if…else结构可以用于判断表达式是否成立,比如if(a+b>c),if…else的应用范围更广,switch…case结构在某些情况下可以替代if…else结构。

2.switch不加break为什么具有直通性?

用break的作用就是跳出switch,不执行其他的case,如果不加就一直走下去,一直等到下一个break后跳出,如果一直没有break,就要等到switch结束后退出。

相关文章
|
6月前
|
机器学习/深度学习 人工智能 数据处理
OpenBioMed:开源生物医学AI革命!20+工具链破解药物研发「死亡谷」
OpenBioMed 是清华大学智能产业研究院(AIR)和水木分子共同推出的开源平台,专注于 AI 驱动的生物医学研究,提供多模态数据处理、丰富的预训练模型和多样化的计算工具,助力药物研发、精准医疗和多模态理解。
269 1
OpenBioMed:开源生物医学AI革命!20+工具链破解药物研发「死亡谷」
|
NoSQL 算法 Java
使用 Spring Boot 实现限流功能:从理论到实践
【6月更文挑战第18天】在微服务和高并发系统中,限流(Rate Limiting)是一种非常重要的技术手段,用于保护系统免受过载,确保服务的稳定性。限流可以控制请求的速率,防止单个客户端或恶意用户消耗过多的资源,从而影响其他用户。
1263 5
|
人工智能 编解码 监控
|
Java API 开发者
【面试题精讲】SPI 和 API 有什么区别?
【面试题精讲】SPI 和 API 有什么区别?
|
数据可视化 数据挖掘 Go
GOplot|宝藏R包,拯救你的GO富集结果,杜绝平庸的条形图
`GOplot`是一款R包,专注于GO富集分析的可视化,提供多种图表类型如GOBar、GOBubble、GOCircle、GOChord和GOVenn等。这些函数允许用户轻松修改参数,定制颜色、大小和排序,实现数据的直观展示。示例代码展示了如何使用这些功能创建不同类型的图形,并提到了一个配套的shiny应用。`GOplot`简化了复杂的数据可视化过程,适合快速高效地展示差异分析结果。
570 0
|
存储 算法 缓存
高并发架构设计三大利器:缓存、限流和降级问题之滑动窗口算法的原理是什么
高并发架构设计三大利器:缓存、限流和降级问题之滑动窗口算法的原理是什么
157 0
|
算法 项目管理
AIGC和设计师的区别
AIGC和设计师的区别
|
消息中间件 算法 数据处理
深入Flink系列——watermark使用与源码详解
# 1 Flink时间体系 本节我们主要关注Flink的时间体系,包括Flink的时间语义、watermark机制及watermark的生成与传播原理,主要进行一些flink watermark理论知识的梳理。 ## 1.1 Flink的时间语义 Flink支持三种时间概念:EventTime/ProcessingTime/IngestionTime,即事件时间、处理时间、摄入时间。 ![imag
3289 0
深入Flink系列——watermark使用与源码详解
|
缓存 NoSQL Redis
Redis系列-9.Redis布隆过滤器BloomFilter
Redis系列-9.Redis布隆过滤器BloomFilter
219 1
|
Java Linux 网络安全
群晖DS218+部署Harbor(1.10.3)
家里的群晖用来装上GitLab,可以保存代码,也可以执行GitLab CI
532 1
群晖DS218+部署Harbor(1.10.3)