首先感谢大家的评论,前一篇文章中评论区有一位小伙伴问到了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");}输出:123

(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

switch 没有default_「java面试」switch究竟怎么用,不要让它吃灰了!相关推荐

  1. 「Java面试」将线程安全讲的如此清新脱俗:你对线程安全性的理解

    需要完整版面试文档可扫描文章底部二维码! 一位4年工作经验的小伙伴,被问到一个非常抽象的问题,说,谈谈你对线程安全性的理解.如果平时只是刷刷面试题的话,遇到这种问题可能不知道如何说起了,往往需要自己组 ...

  2. 「Java基础」范型

    范型概述 1 范型是为了解决什么问题? 范型的出现是为了解决安全问题,它限制数据传入的类型,下面举例说明 // Demo1: 不使用范型ArrayList al = new ArrayList(); ...

  3. 「技术面试」问答中有什么十分实用的面试技巧?

    技术面试通常至少三轮: 基础面试: 主要考察对岗位和简历中涉及到基础知识部分的提问,包括一部分算法和场景设计的面试题,这一面可能会涉及现场coding. 项目面试: 主要考察简历中涉及的项目,会涉及你 ...

  4. 「java工程师」常见面试题及其答案(持续更新)

    「高级java工程师」常见面试题及其答案: 「高级java工程师」常见面试题及其答案(持续更新)_好人老李的博客-CSDN博客 目录 java基础 面向对象与面向过程的区别? JRE.JDK.JVM的 ...

  5. python编程a的x次方_「Python 面试」第四次更新

    阅读本文大约需要 5 分钟. 15.说一说 GIL 前面有提到由于 Python 基于 C 语言编写的解释器中设置了一个 GIL 全局变量锁,该锁使得 Python 的多线程在处理 CPU 计算密集型 ...

  6. 程序员疯传「编程语言鄙视链」,究竟谁能逃过一劫?

    有江湖的地方就有纷争,编程语言也不例外!下图是网上盛传的「编程语言鄙视链」: 图片来源于网络,如侵删 这才发现,只要是能说出名字的编程语言都位列于所谓的编程语言鄙视链上,只有前端游离于体系之外.怎么? ...

  7. 特斯拉公布的「新电池」,究竟要用在哪里?

    来源丨ArsTechnica 作者丨SCOTT K. JOHNSON 编译丨科技行者 在近期的"电池日(battery day)"活动上,特斯拉公司终于透露了其长期保密项目的一系列 ...

  8. java object怎么拿字段_「Java面试秘籍」String不可变,如何理解

    Java中最常见的就是String类,那么很多人都说String是不可变类型,那么如何解释下面的代码? public class StringTest { public static void mai ...

  9. java function获取参数_「Java容器」ArrayList源码,大厂面试必问

    ArrayList简介 ArrayList核心源码 ArrayList源码分析 System.arraycopy()和Arrays.copyOf()方法 两者联系与区别 ArrayList核心扩容技术 ...

最新文章

  1. window.onload 不执行
  2. Google Earth Pro 模拟飞行 分享
  3. 生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库?
  4. CSS--CSS清除浮动的4种方式
  5. VB589语音识别芯片开发
  6. 信号的捕捉与sigaction函数
  7. apache lucene介绍
  8. 导图速读《高性能MySQL》
  9. linux 内网文件传输工具_局域网内文件传输工具 | nitroshare
  10. 用友u8怎么导出凭证_老师,用友U8里的凭证如何导出(导出有借贷方向的)?...
  11. 字体变体font-variation-*
  12. win10鼠标右键一直转圈怎么解决 鼠标右键一直转圈
  13. [Nowcoder] 2021年度训练联盟热身训练赛第六场 Mini Battleship | 深搜 回溯 乱搞
  14. LeetCode | 347. Top K Frequent Elements
  15. excel 链接sql server数据库,并使用sql语句导出自己想要的数据
  16. pdf转换成jpg格式快准狠的转换方法
  17. 如何申请小程序与小程序支付
  18. 【日常学习】DAU和MAU
  19. 女生无法拒绝的表白拼图
  20. CSS小技巧-为内盒子添加margin-top时,会带着父盒子一起下来,如何解决?

热门文章

  1. Python 函数参数有冒号 声明后有- 箭头
  2. python请输入第一个数请输入第二个数_Python小白学习之路(四)——第一次练习题...
  3. flask request (request.files)
  4. socket如何定义端口号才能避免和其他程序冲突?
  5. tensorflow tf.data.TextLineDataset()对象 (包含来自一个或多个文本文件的行的“数据集”) 不懂是啥玩意??
  6. CentOS6.5安装Redis3.2.8版本
  7. Java强引用、软引用、弱引用、虚引用的区别
  8. Java进阶:ReentrantLock实现原理解析(公平锁、非公平锁、可重入锁、自旋锁)
  9. js判断是由含有a节点_怎么判断某个dom节点是否包含某个dom节点?
  10. python保存快捷键_超详细的Sublime Text配置python教程