本文主要说一说关于switch case语句用法及注意事项,应对面试官的提问。希望可以帮助那些对switch存在错误和各种细节问题的“码友”。

switch-case注意事项

switch(A),括号中A的取值只能是整型或者可以转换为整型的数值类型,比如byte、short、int、char、还有枚举;需要强调的是:long和String类型是不能作用在switch语句上的。注意的是在JDK1.7之后,switch(A),括号中A的取值也支持String了。

语法case B:C,case是常量表达式,也就是说B的取值只能是常量(需要定义一个final型的常量)或者int、byte、short、char、String(比如1、2、3、200、yoodb等),case后的语句可以不用大括号,也就是说C不需要使用大括号;default没有符合的case就执行它,default并不是必须的。

switch-case语句格式如下:switch(变量){

case 变量值1:

//;

break;

case 变量值2:

//...;

break;

...

case default:

//...;

break;

}

案例一:若未找到,则执行默认的caseint i = 6;

switch(i){

case 0:

System.out.print("0");break;

case 1:

System.out.print("1");break;

case 2:

System.out.print("2");break;

default:

System.out.print("default");break;

}

运行结果输出:default

案例二:当每一个case都不存在break时,匹配成功后,从当前case开始,依次返回后续所有case的返回值。int i = 2;

switch(i){

case 0:

System.out.print("0");

case 1:

System.out.print("1");

case 2:

System.out.print("2");

default:

System.out.print("default");

}

运行结果输出:2 default

案例三:当每一个case都不存在break时,JVM并不会顺序输出每一个case对应的返回值,而是继续匹配,匹配不成功则返回默认case的值。int i = 6;

switch(i){

case 0:

System.out.print("0");

case 1:

System.out.print("1");

case 2:

System.out.print("2");

default:

System.out.print("default");

}

运行结果输出:default

案例四:若当前匹配成功case但不存在break时,则从当前case开始,依次返回后续case的返回值,直至遇到break,跳出判断。int i = 2;

switch(i){

case 0:

System.out.print("0");

case 1:

System.out.print("1");

case 2:

System.out.print("2");

case 3:

System.out.print("3");break;

default:

System.out.print("default");

}

运行结果输出:2 3

解决问题

大家看下面的程序段,具体代码如下:public class TestSwitch {

public static void main(String[] args){

byte a = 11;

switch(a){// C

case 11 : System.out.println(" 11 "); break;

case 225 : System.out.println(" 11 "); break;// D

}

}

}

该代码正确吗?答案是否定的。虽然C处byte类型的a值可以存在switch中,但是在D处case的值是225时,大小超出了byte的最大值范围,导致出现错误。

个人总结

switch case执行过程中,一定是先进行匹配,匹配成功后返回当前case的值,再根据是否存在break判断是否继续输出,或者跳出判断,注意的是case B:C,B的取值只能是常量,不能是变量,否则JVM报错。

java case switch面试_Java基础篇——Java中switch case语句用法及注意事项面试题9期相关推荐

  1. java三大特性 继承_java基础(二)-----java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  2. java的技术定义_java基础知识——Java的定义,特点和技术平台

    (作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...

  3. java 格式化 布尔型_Java基础篇(1)-格式化

    本文目录: 十进制数字格式化--DecimalFormat 数字格式化基类--NumberFormat 字符串格式化类--String.format() Linux输出格式化--printf 1. 十 ...

  4. java int相除向上取整_Java基础篇——Java运算符

    Java运算符按功能可分为:算数运算符.关系运算符.逻辑运算符.位运算符.赋值运算符和条件运算符. 算数运算符 算术运算符包括通常的加(+).减(-).乘(*).除(/).取模(%),完成整数型和浮点 ...

  5. java视频教程千峰_java基础教程-Java开发入门视频教程-千锋教育视频资源库

    第1节 - Java由来及语言特点 点击播放 第2节 - Java的执行机制及第一个应用程序 点击播放 第3节 - 类的阐述及Package相关 点击播放 第4节 - Java的编码规范 点击播放 第 ...

  6. java单引号转义_Java基础入门——Java语言基础(上)

    本篇我们开始进入Java的学习,首先在学习如何编写Java语言前要先了解Java程序的基本结构. 一.Java程序的基本结构 一个Java程序的基本结构大体可以分为包.类.main()主方法.标识符. ...

  7. java知识串讲_java基础之Java知识串讲

    一.JDK个版本之间的区别: 1.JDK1.5的新特性: 泛型ArrayList list = new ArrayList();-->ArrayList list = new ArrayList ...

  8. java基础篇_java基础篇1

    JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...

  9. java从小白到工程师--基础篇(二)

    本期作业:将你的姓氏的Unicode码用程序显示出来. 上一章节中我们配置了环境变量,编写了第一个java程序"hello,world"(java从小白到工程师--基础篇(一) ) ...

最新文章

  1. adv7842自定义方式
  2. 【整数反转】算法优化笔记
  3. 杨柳目-杨柳科-Info-新闻:注意了!杨絮解决有办法了
  4. 关于oracle中to_char和to_date的用法
  5. Gift for GS5
  6. JavaFX将会留下来!
  7. ollyice的学习
  8. 威胁情报 设备之外的安全能力
  9. html为标题添加脚注,如何在rmarkdown html中的特定标题下放置脚注?
  10. 初识云计算————虚拟化背景
  11. Spring复习——B站
  12. 在职考研读计算机科学,能否以在职读研的形式学习在职研究生计算机科学与技术专业?...
  13. anaconda环境迁移
  14. proxmox ve 7.2 AMD显卡直通 网卡驱动 调度器
  15. 【C语言】C语言中赋值语句规则
  16. CIKM 2020 | 一文详解美团6篇精选论文
  17. 监控文件变化 (Python—看门狗)
  18. python返回上一个交易日
  19. 第四章:项目整合管理 - (4.6 实施整体变更控制)
  20. 图的遍历算法-七巧板涂色

热门文章

  1. 云小课|聊一聊DRS的数据过滤特性
  2. 新来的运维这样用HDFS,CIO都懵了···
  3. 实战解读丨Linux下实现高并发socket最大连接数的配置方法
  4. 【华为云技术分享】序列特征的处理方法之一:基于注意力机制方法
  5. 关于Python中的错误与异常,你是否了解的够仔细?
  6. Java虚拟内存区域介绍
  7. Service之bindService
  8. 脉冲神经网络基础知识,SpikeProp
  9. 最小公倍数一些性质定理及证明
  10. ping和telnet的区别