网络上写了很多 default 的位置不同,对执行结果的影响,自认为理解过于复杂,这里按照自己的理解整理一下
一、只有switch case 情况
①从上往下载case中找到与switch匹配的值(case中的匹配值不需要升序或者降序排列),找到后并往下执行语句(当然执行语句也可以为空,表示值进行判断不需要执行语句的情况)
public static void main(String[] args) {
int i = 1;
switch (i) {
case 2:
System.out.println("2");
case 1:
System.out.println("1");
case 0:
System.out.println("0");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
}
1
0
存在不需要执行语句的情况,如下
public static void main(String[] args) {
int i = 1;
switch (i) {
case 2:
System.out.println("2");
case 1:
case 0:
System.out.println("0");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
}
0
② 如果没有匹配上任何case,则不执行任何语句,结果为空
public static void main(String[] args) {
int i = 8;
switch (i) {
case 2:
System.out.println("2");
case 1:
case 0:
System.out.println("0");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
}
Process finished with exit code 0
一、存在switch case default的情况
① 首先在匹配过程中,先可以假想defautlt 不存在(default的位置没有任何影响),匹配case,匹配成功,接下来就是执行阶段,从匹配成功的入口往下执行,直到遇到第一个break跳出(注意往下执行的语句包含default语句)
public static void main(String[] args) {
int i = 1;
switch (i) {
case 2:
System.out.println("2");
case 1:
System.out.println("1");
default:
System.out.println("default");
case 0:
System.out.println("0");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
}
1
default
0
② 如果case没有匹配成功,则执行default 语句(以dafault为入口),从上往下执行,并遇到第一个break(没有就执行到末尾)跳出(这里好像default的位置影响了结果,其实这样理解太复杂了,就是按照匹配和执行两部分进行分析就好了)
public static void main(String[] args) {
int i = 8;
switch (i) {
default:
System.out.println("default");
case 2:
System.out.println("2");
case 1:
System.out.println("1");
case 0:
System.out.println("0");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
}
default
2
1
0
下面的代码就表示,只有符合case的任一结果就会得到返回值
switch (user.getUsetype()) {
case SysUserEntity.USERTYPE_HOUSEHOLD:
case SysUserEntity.USERTYPE_BOTH_EH:
case SysUserEntity.USERTYPE_AGED:
case SysUserEntity.USERTYPE_BOTH_EA:
return Result.fail(CodeConstant.PHONE_NUM_EXISTS);
}
public static void main(String[] args) {
int i = 8;
switch (i) {
case 2:
System.out.println("2");
case 1:
System.out.println("1");
case 0:
System.out.println("0");
break;
default:
System.out.println("default");
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
}
3
4
2019.9.5 补充:
switch…case… 与return整合使用
switch (sysUser.getUsetype()) {
//账号注销状态,无法登录
case SysUserEntity.USERTYPE_CANCEL:
return Result.fail(CodeConstant.USER_CANCEL);
//员工无法登录
case SysUserEntity.USERTYPE_EMPLOYEE:
return Result.fail(CodeConstant.CUSTOMER_LOGIN_LIMIT);
}
本文详细解析了Java中switch case语句的工作原理,包括匹配过程、执行流程及default语句的作用,通过具体代码示例展示了不同情况下switch case的执行结果。
7632

被折叠的 条评论
为什么被折叠?



