今天遇到的BUG
= =
switch忘记break了= =
package 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呢?
package 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并不是必须的.
package 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执行统一语句
package 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条件了~
如果所有条件都没有合适的,那么它一段代码都不会执行