- 很多的资料上写着,default 这个语句的后面是不用加break语句的,但其实实在switch中不管哪一个分支,后面都要加上break语句结束循环的的,但是default 后面一般就是switch的“}”括号,所以,在default 后面加一个break意义不太大而已
- switch语句几乎和break分不开,尽管从语法上没有硬性的规定要有break,但任何一个用到switch语句的实用程序,都离不开break语句。因为本质上,case语句只是一个“入口”,并没有判断的功能,如果没有break,程序就会毫无阻碍地长驱直入,而不具备了分支的作用。
- switch一旦通过某一条case或者default语句做入口“进入后”,没有遇到①break或者 ②大括号} 就不会终止,后面的case和default语句没有判断作用,只是“入口”而已,因为之前已经进入了,所以后面语句会一直按顺序执行
例一:
public static void main(String[] args) {
int x=2,y=3;
switch (x){
default:
y++;
case 3:
y++;
case 4 :
y++;
}
System.out.println(y);
}
输出:6
例二:
答案:会执行,而且num=10+1+1-1=11,通过case 'A’语句已经进入后,因为都没有break,后面的case 与default不具备选择功能,所以case 'A’后面的语句都会执行
4.之所以这样设计师为了更灵活,比如如下例子
例题三
:
Scanner input = new Scanner(System.in);
System.out.println("请输入月份");
int month = input.nextInt();
System.out.println("请输入月份天数");
int day = input.nextInt();
int days = 0;
switch (month) {
case 12:
days += 30;
case 11:
days += 31;
case 10:
days += 30;
case 9:
days += 31;
case 8:
days += 31;
case 7:
days += 30;
case 6:
days += 31;
case 5:
days += 30;
case 4:
days += 31;
case 3:
days += 29;
case 2:
days += 31;
case 1:
days += day;break;
default:
System.out.println("输入数字非法");
}
System.out.println("那天是2020年的第"+days+"天");