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

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

switch-case注意事项

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

c337632ee11edc9a3ba958a622ef51d5.png

语法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报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值