目标
return、break和continue的在循环体中的区别
for、while、stream.foreach()都有效么?
demo
代码地址 https://gitcode.net/kiduo08/learning-junior.git
详细视频教程https://www.bilibili.com/video/BV1RY4y1t7DS/
区别
1、for循环-continue
作用:结束本次循环,继续for未执行的循环。
public class Junior1 {
public static void main(String[] args) {
int result = continueMethod();
System.out.println("函数调用返回结果=="+result);
}
static int continueMethod(){
int returnInt = 0;
for(int i=1;i<5;i++){
if(i == 3){
continue;
}
System.out.println(i);
returnInt = i;
}
System.out.println("for循环执行结束");
return returnInt;
}
}
输出结果:
1
2
4
for循环执行结束
函数调用返回结果==4
结论:输出结果只少了一个3
,可以得出continue
是结束本次i==3
的循环,从i==4
开始继续循环。
2、for循环-break
作用:跳出循环执行for循环后面的语句
public class Junior1 {
public static void main(String[] args) {
int result = breakMethod();
System.out.println("函数调用返回结果=="+result);
}
static int breakMethod(){
int returnInt = 0;
for(int i=1;i<5;i++){
if(i == 3){
break;
}
System.out.println(i);
returnInt = i;
}
System.out.println("for循环执行结束");
return returnInt;
}
}
输出结果:
1
2
for循环执行结束
函数调用返回结果==2
结论:3、4未输出,输出for循环执行结束
,得出break
是跳出当前for循环体,继续for循环体后面的语句。
3、for循环-return作用:直接结束函数调用并返回结果。
public class Junior1 {
public static void main(String[] args) {
int result = returnMethod();
System.out.println("函数调用返回结果=="+result);
}
static int returnMethod(){
int returnInt = 0;
for(int i=1;i<5;i++){
if(i == 3){
return i;
}
System.out.println(i);
returnInt = i;
}
System.out.println("for循环执行结束");
return returnInt;
}
}
输出结果
1
2
函数调用返回结果==3
结论:3、4 与for循环执行结束
都未输出,得出return
直接结束本次函数调用。
总结
一、作用不同
- continue:执行continue操作,跳出本次循环,从下一个迭代继续运行循环,内层循环执行完毕,外层代码继续运行。
- break:执行break操作,跳出所在的当前整个循环,到外层代码继续执行。
- return:执行return操作,直接返回函数,所有该函数体内的代码(包括循环体)都不会再执行。
二、结束不同
- continue:continue结束的是本次循环,将接着开始下一次循环。
- return:return同时结束其所在的循环和其外层循环。
- break:结束其所在的循环。
三、补充
1、break: 如果有两层循环 break 在最里面的一层循环,会跳出两层循环还是会跳出一层循环呢?
static String breakMethod(String[] arr){
String returnString = "";
for(int k=1;k<3;k++){
System.out.println(k);
for(int i=0;i<arr.length;i++){
if("c".equals(arr[i])){
System.out.println("当前判断为true");
break;
}
System.out.println(arr[i]);
returnString = arr[i];
}
}
System.out.println("breakMethod执行结束");
return returnString;
}
1
a
b
当前判断为true
2
a
b
当前判断为true
breakMethod执行结束
函数调用返回结果==b
根据结果可以看出、break 只是跳出当前循环(for(int i=0;i<arr.length;i++)
)这个循环
2、如果是stream.forEach()
怎么报错,怎么来替代呢?
stream.forEach()
方法中使用 continue与break 的话会编译报错,使用return 来替代continue;
视频演示详细讲解https://www.bilibili.com/video/BV11B4y117yq?spm_id_from=333.999.0.0