今天遇到的BUG
= =
switch忘记break了= =
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32package julyStudy; /** * @Author : pmdream * @Description : SwitchUseCase * @Date : 2019/7/17 */ public class SwitchUseCase { public static void main(String[] args) { int a = 1; int b = 1; switch (a) { case 1 : b++; System.out.println(b); case 2 : b++; System.out.println(b); case 3 : b++; System.out.println(b); case 4 : b++; System.out.println(b); default: break; } } }
结果就是:
2
3
4
5
如果第一步就是default呢?
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32package julyStudy; /** * @Author : pmdream * @Description : SwitchUseCase * @Date : 2019/7/17 */ public class SwitchUseCase { public static void main(String[] args) { int a = 1; int b = 1; switch (a) { default: break; case 1 : b++; System.out.println(b); case 2 : b++; System.out.println(b); case 3 : b++; System.out.println(b); case 4 : b++; System.out.println(b); } } }
结果依然是:
2
3
4
5
所以defaul其实并没有执行。
switch(表达式)
{
case 常量表达式1:语句1;
....
case 常量表达式2:语句2;
default:语句;
}
default就是如果没有符合的case就执行它,default并不是必须的.
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38package julyStudy; /** * @Author : pmdream * @Description : SwitchUseCase * @Date : 2019/7/17 */ public class SwitchUseCase { public static void main(String[] args) { int a = 111; int b = 1; switch (a) { default: a++; System.out.println(a); break; case 1 : b++; System.out.println(b); break; case 2 : b++; System.out.println(b); break; case 3 : b++; System.out.println(b); break; case 4 : b++; System.out.println(b); break; } } }
总结:
一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32package julyStudy; /** * @Author : pmdream * @Description : SwitchUseCase * @Date : 2019/7/17 */ public class SwitchUseCase { public static void main(String[] args) { int a = 111; int b = 1; switch (a) { default: break; case 1 : b++; System.out.println(b); case 2 : b++; System.out.println(b); case 3 : b++; System.out.println(b); case 4 : b++; System.out.println(b); } } }
所以上述执行结果就是空的。
所以一旦case条件对了,他就要找到break;而不会关心后面的case条件了~
如果所有条件都没有合适的,那么它一段代码都不会执行
最后
以上就是淡然母鸡最近收集整理的关于java switch要记得break(一个小坑~)的全部内容,更多相关java内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复