今天复习了一下基础发现好多细节的东西都不知道打算把java基础在重新复习一遍。
一般在实际开发中case语句后面都会加上break 但是不加break会报错吗?
看一下代码:
第一种条件没有break
int i=1;
switch (i){
case 1:
System.out.println("case1");
case 2:
System.out.println("case2");
case 3:
System.out.println("case3");
default:
System.out.println("default");
}
结论:发现如果case语句中没有break跳出循环的话后面的case将不做判断直接运行,而且default中的语句也会执行
第二种条件:符合条件case中有break
int i = 1;
switch (i) {
case 1:
System.out.println("case1");
break;
case 2:
System.out.println("case2");
case 3:
System.out.println("case3");
default:
System.out.println("default");
}
结论:会发现符合case的语句直接执行并且直接跳出switch循环default语句也不执行
第三种条件:符合条件case中没有break 但是下一个case中有
int i = 1;
switch (i) {
case 1:
System.out.println("case1");
case 2:
System.out.println("case2");
break;
case 3:
System.out.println("case3");
default:
System.out.println("default");
}
结论:符合case条件的语句中如果没有break的话则会继续向下执行,遇见break才会跳出 default不会执行!
第四种条件:当default语句在switch最前面!
int i = 1;
switch (i) {
default:
System.out.println("default");
case 1:
System.out.println("case1");
case 2:
System.out.println("case2");
break;
case 3:
System.out.println("case3");
}
结论:default语句也不会执行
第五种条件:default语句在最前面,case中没有break
int i = 1;
switch (i) {
default:
System.out.println("default");
case 1:
System.out.println("case1");
case 2:
System.out.println("case2");
case 3:
System.out.println("case3");
}
大家会发现default中的语句没有像条件一 一样执行
结论:default并不是必须执行的
条件五:当没有符合条件的case 并且default语句在最前面;
int i = 0;
switch (i) {
default:
System.out.println("default");
case 1:
System.out.println("case1");
case 2:
System.out.println("case2");
case 3:
System.out.println("case3");
}
顺序执行!
本次这几个条件我自己总结一下就是:
1.当没有符合条件的case则会执行default语句和default语句的位置无关。
2.当case中没有break的时候会自动给顺序执行直到遇见break;跳出循环否则顺序向下执行!
3.如果没有符合条件的case且default写在前面没有break则也会向下执行case的语句!直到遇见break!(建议default语句都写在最后面或者加上break!)