【Java基础二】break && continue
对于break和continue而言,大家深知多少,最近review代码的时候就遇到了其相关的细节问题,且不说遇到了什么问题:咱们针对demo说话:
break细节发现:
看如下demo:
public static void main(String[] args) {
System.out.println("2转换英文值="+toChineseNumberCase(2));
}
public static String toChineseNumberCase(int n){
String chineseNumber="";
switch(n){
case 0:chineseNumber="zero";
case 1:chineseNumber="one";
case 2:chineseNumber="two";
case 3:chineseNumber="three";
case 4:chineseNumber="four";
case 5:chineseNumber="five";
}
return chineseNumber;
}
执行如上结果,执行的结果会是什么呢?会是2所对应的单词two吗?如果基础过硬的话,再仔细看一下代码就会发现问题,每个case后面都没有加break,这种情况下,我从case 2开始执行,由于没有break,所以会一直执行,直到整个case执行完,所以输出结果为five:
执行结果:
如果想输出理想结果,则必须加上break,代码更改为:
public static String toChineseNumberCase(int n){
String chineseNumber="";
switch(n){
case 0:chineseNumber="zero";
break;
case 1:chineseNumber="one";
break;
case 2:chineseNumber="two";
break;
case 3:chineseNumber="three";
break;
case 4:chineseNumber="four";
break;
case 5:chineseNumber="five";
break;
}
return chineseNumber;
}
执行结果:
在review代码的是偶,就遇到了这个问题,break也不是忘记添加了,而是少些了一个,这样在测试过程中是针对一种情况来进行的,导致其细节过程没有测试出来,最后在大火的火眼金睛之下才完成了优化,试想一下:如果直到上线这个问题都没被发现的话,会导致什么严重的后果,再次不再细节分析。
break && continue对比:
除上述break问题外,当我们执行某个循环的时候,总会遇到break和continue的犹豫不决,到底该用break还是continue???
demo尝试一下:
public static void main(String args[]) {
System.out.println("开始测试continue");
for (int i = 0; i < 6; i++) {
System.out.println("开始第" + i + "次for循环");
if (i == 3) {
continue;
}
}
System.out.println("continue测试完毕\n***********************");
System.out.println("开始测试break");
for (int i = 0; i <6; i++) {
System.out.println("开始第" + i + "次for循环");
if (i == 3){
break;
}
}
System.out.println("break测试完毕\n***********************");
}
执行结果:
通过结果可以发现,其实对于continue而言,是结束符合条件的本次循环;而对于break而言,则是结束整体循环。