百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

「java面试」switch究竟怎么用,不要让它吃灰了!

yuyutoo 2024-10-14 16:16 3 浏览 0 评论

首先感谢大家的评论,前一篇文章中评论区有一位小伙伴问到了java中switch,今天我们来讲一下switch的基础用法以及注意事项。(感谢大家的留言支持,我都会认真看,也尽可能的为大家解答疑惑)

1.switch用于分支选择,使用方法如下。

switch(exp){
 case value :
 //语句
 break; 
 case value :
 //语句
 break; 
 //你可以有任意数量的case语句
 default : //可选
 //语句
}

switch case 执行时,会先用exp和value进行匹配,匹配成功返回当前 case 中语句的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

exp可以是:byte、short、int、char、String、枚举类型(很重要)。

2.switch使用注意事项

(1)switch 语句中的变量类型可以是: byte、short、int 或者 char,不能使用long、float、double。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

-有的小伙伴要问了,为什么?

答:因为byte、short、char实际上都能隐式的转化为int类型,而long、float、double不行。

-有的小伙伴又要说了,胡说八道,我那天看见我们工程里面有人用 Character、Short、

Integer都可以!

答:确实可以,这来源于包装类型的自动拆分包,拆包后流程就都一样了。

-有的小伙伴可能还要问,String也不能隐式转int,为什么能支持呢?

答:实际上比的还是int,只不过这次是用exp的hashcode()方法获取一个int类型的hash值,然后跟case后面的String用同样的方法获取哈希值,两个一比,就匹配上了。从这里也能看出来,case后面的string值不能为空。

(2)switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。

(3)case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

(4)当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。

(5)当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。

例如:
int i = 1;
switch(i){
 case 0:
 System.out.println("0");
 case 1:
 System.out.println("1");
 case 2:
 System.out.println("2");
 case 3:
 System.out.println("3"); break;
 default:
 System.out.println("default");
}

输出:
1
2
3

(6)switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

例如:
int i = 4;
switch(i){
 case 0:
 System.out.println("0");break;
 case 1:
 System.out.println("1");break;
 case 2:
 System.out.println("2");break;
 case 3:
 System.out.println("3"); break;
 default:
 System.out.println("default");
}
输出:
default

相关推荐

VBA中利用Instr函数(vba int函数)

【分享成果,随喜正能量】每一个在你的生命里出现的人,都有原因,喜欢你的人给了你温暖和勇气,你喜欢的人让你学会了爱和自持,你不喜欢的人教会你宽容与尊重,不喜欢你的人让你自省与成长。。...

Insta360 Link体验:支持4K画质,一款使用场景丰富的AI云台摄像头

记者|王公逸伴随直播、线上会议需求的兴起,网络直播的需求愈发增大,8月2日,影石Insta360正式推出全新产品:Insta360Link,这是一款AI智能云台摄像头。从产品形态来说,Insta3...

VBA技术资料MF299:利用Instr进行文本查找

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VB...

Fabric.js 拖放元素进画布 - 掘金

本文简介点赞+关注+收藏=学会了学习Fabric.js,我的建议是看文档不如看demo。本文实现的功能:将元素拖进到画布中并生成对应的图形或图片。效果如下图所示:...

Vue3为什么推荐使用ref而不是reactive

为什么推荐使用ref而不是reactivereactive本身具有很大局限性导致使用过程需要额外注意,如果忽视这些问题将对开发造成不小的麻烦;ref更像是vue2时代optionapi的data的替...

Fabric.js 样式不更新怎么办?(js更改样式)

本文简介带尬猴,我嗨德育处主任不知道你有没有遇到过在使用Fabric.js时无意中一些骚操作修改了元素的样式,但刷新画布却没更新元素样式?如果你也遇到同样的问题的话,可以尝试使用本文的方法。...

Fabric.js 修改画布交互方式到底有什么用?

本文简介点赞+关注+收藏=学会了fabric.js为我们提供了很多厉害的方法。今天要搞明白的一个东西是canvas.interactive。官方文档对canvas.interact...

Rust Web编程:第五章 在浏览器上显示内容

我们现在正处于可以构建一个Web应用程序的阶段,该应用程序可以使用不同的方法和数据管理一系列HTTP请求。这很有用,特别是当我们为微服务构建服务器时。然而,我们也希望非程序员能够与我们的应...

Fabric.js 自由绘制椭圆 - 掘金(canvas画椭圆)

本文简介点赞+关注+收藏=学会了本文讲解在Fabric.js中如何自由绘制椭圆形,如果你还不了解Fabric.js,可以查阅《Fabric.js从入门到精通》。效果如下图所示...

手把手教你实现JS手搓"防抖"优化代码——专业的事用专业的方法!

前言在我们前端编程中,假如我们要给后端发送请求,万一手抖多点了几次,多发送了几遍怎么办?解决方案:防抖!这种事就要交给我们专业的“防抖”先生来处理!今天,我们就来教大家手搓“防抖”...

详解虚拟DOM与Diff算法(虚拟dom一定比实际dom快吗)

vue的虚拟DOM,Diff算法,其中一些关键的地方从别处搬运了一些图进行说明(感谢制图的大佬),也包含比较详细的源码解读。...

走进 React Fiber 的世界(我走进你的世界手势舞视频)

文/阿里淘系F(x)Team-冷卉Fiber设计思想Fiber是对React核心算法的重构,facebook团队使用两年多的时间去重构React的核心算法,在React16以上...

前端新一代框架 Svelte 火了!十个场景带你简单认识它!

近几年听到的主流框架都是Vue、React、Angular,但其实有一个框架在国外非常火,用起来也是很方便,那就是...

借助DeepSeek实现了一个PDF阅读器

1、简介使用pdf.js库加载和显示PDF文件。实现了翻页、缩放功能。提供了基本的错误处理。功能特点:支持选择本地PDF文件。可以逐页查看PDF内容。支持放大缩小功能。界面简洁,易于使...

DeepSeek代码之旅1:卫星地图标记方法之——html语言的实现

最近遇到一个任务,具体功能如下:1、调用高德地图API,图层为卫星图层,根据需要标记兴趣点;2、标记完成后可以保存兴趣点,便于下次加载历史兴趣点。...

取消回复欢迎 发表评论: