在循环语句中遇到这两个的时候总感觉有些迷糊,难以区分,下面给出示例来描述区别。
注意:break 直接跳出循环,执行循环后的代码;continue,结束本次循环,执行下次循环(即跳过本次循环)
循环嵌套中,外层循环执行一次,内层循环执行一遍。
(1) 单层循环
public class Test {
public static void main(String[] args) {
for(int i = 0; i <= 5; i++){
if(i == 3){
break; //结束循环
}
System.out.println("i = " + i);
}
}
}
for(int i = 0 ; i <= 3; i++){
if(i == 2){
continue;
}
System.out.println("i = " + i);
}
(2)循环嵌套中使用,break语句结束其所在的当前循环,继续之后的代码以及外层循环。
for(int i = 0 ; i <= 3; i++){
for(int j = 1; j <= 5; j++){
if(j == 3){
break;
}
System.out.println("内层j: " + j);
}
System.out.println("外层i: " + i);
}
for(int i = 0; i <= 3; i++){
for(int j = 0 ; j <= 5; j++){
if(j == 3){
continue;
}
System.out.println("内层j: " + j);
}
System.out.println("外层i: " + i );
}
(3)break语句不仅可以结束其所在的循环,还可以直接结束其外层循环。此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环。Java中的标签就是一个紧跟英文冒号(:)的标识符。与其它语言不同的是,Java中的标签只有放在循环语句之前才有作用。
//外层循环,outer作为标识符
outer:
for(int i = 0; i < 10; i++){
//内层循环
for(int j = 0; j < 5; j++){
System.out.println("i的值:" + i + " , j的值:" + j);
if(j == 2){
//跳出outer标签所标记的循环
break outer;
}
}
}
(4)与break类似的,continue后也可紧跟一个标签,用于直接跳过标签所标识循环的当次循环的剩下语句,重新开始下一次循环。
public static void main(String[] args) {
//外层循环,outer作为标识符
outer:
for(int i = 0; i < 10; i++){
//内层循环
for(int j = 0; j < 5; j++){
System.out.println("i的值:" + i + " , j的值:" + j);
if(j == 2){
//跳过outer标签所标记的循环
continue outer;
}
}
}
}
其实,这些示例要想明白最好使用debug模式来进行流程的查看,小小建议