1,三者都是中断程序的执行,但是中断的能力不同
continue最弱,break中间,return最强,即continue<break<return,continue中断一趟循环,break中断一层循环,return中断所有层循环
2,举例说明
public class testBreak {
public static void main(String[] args) {
for(int i=0;i<5;i++){
System.out.println("开始循环"+i);
for(int j=3;j>0;j--){
System.out.println("最内层循环退出了"+j+"次!");
break;
//return;
}
System.out.println("最外层循环"+i+"次");
}
}
}
1)如果是break语句,结果是:
开始循环0
最内层循环退出了3次!
最外层循环0次
开始循环1
最内层循环退出了3次!
最外层循环1次
开始循环2
最内层循环退出了3次!
最外层循环2次
开始循环3
最内层循环退出了3次!
最外层循环3次
开始循环4
最内层循环退出了3次!
最外层循环4次
注意:这里面break执行之后,不再执行j–
2)如果是return语句,结果是:
开始循环0
最内层循环退出了3次!
注意:这里是直接把所有的循环都给结束了,并且直接结束return语句所在的方法体或者函数体,再次测试如下
这是return语句在子方法体中,不会影响主函数中“测试使用”的输出
public class breaktest {
public static void main(String[] args) {
test01();
System.out.println("测试使用");
}
public static void test01(){
for(int i=0;i<5;i++){
System.out.println("开始循环"+i);
for(int j=3;j>0;j--){
System.out.println("最内层循环退出了"+j+"次!");
//break;
return;
}
System.out.println("最外层循环"+i+"次");
}
}
}
结果是::
开始循环0
最内层循环退出了3次!
测试使用
但如果return语句在主方法中,则直接结束主方法体,“测试输出”不会出现
public class breaktest {
public static void main(String[] args) {
for(int i=0;i<5;i++){
System.out.println("开始循环"+i);
for(int j=3;j>0;j--){
System.out.println("最内层循环退出了"+j+"次!");
//break;
return;
}
System.out.println("最外层循环"+i+"次");
}
test01();
}
public static void test01(){
System.out.println("测试使用");
}
}
结果是:
开始循环0
最内层循环退出了3次!
表明确实return直接结束方法体!
- 如果是continue
public class breaktest {
public static void main(String[] args) {
for(int i=0;i<3;i++){
System.out.println("最外层循环开始"+i+"次");
for(int j=0;j<3;j++){
System.out.println("最内层循环开始"+j+"次!");
//break;
//return;
continue;
System.out.println("最内层循环结束"+j+"次!");
}
System.out.println("最外层循环结束"+i+"次");
}
test01();
}
public static void test01(){
System.out.println("测试使用");
}
}
结果报错,因为continue后面的语句实现不了
Error:(15, 25) java: 无法访问的语句