break、continue、return中选择一个,我们结束掉它
在平时的开发过程中,经常会用到循环,在写循环的过程中会有很多判断条件及逻辑,你知道如何结束一个循环吗?在java中有break、continue、reture三个关键字都可以结束循环,我们看下他们的区别。
一、break
1.1、单层循环
我们先看下在只有一层循环的情况下,break是怎么起作用的,
package com.my.day02;
import java.util.ArrayList;
import java.util.List;
/**
* 测试break
* @date 2022/5/23 21:13
*/
public class TestBreak {
public static void main(String[] args) {
endCycle();
}
/**
* 单层循环
*/
static void endCycle(){
List<String> list=new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
for(String str:list){
if(str.equals("3")){
break;
}
System.out.println("单层:"+str);
}
}
}
结果如下,
单层:1
单层:2
Process finished with exit code 0
在单层循环中,break结束的是整个循环,后续的不再执行;
1.2、多层循环
看下单层循环和多层循环有区别吗,
package com.my.day02;
import java.util.ArrayList;
import java.util.List;
/**
* 测试break
* @date 2022/5/23 21:13
*/
public class TestBreak {
public static void main(String[] args) {
endMultiCycle();
}
/**
* 多层循环
*/
static void endMultiCycle(){
List<String> list=new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
List<String> innerList=new ArrayList<String>();
innerList.add("A");
innerList.add("B");
innerList.add("C");
for(String str:list){
for(String innerStr:innerList){
if(innerStr.equals("B")){
break;
}
System.out.println("外层:"+str+",内层:"+innerStr);
}
}
}
}
我们来看下多层循环会是什么结果那,
外层:1,内层:A
外层:2,内层:A
外层:3,内层:A
外层:4,内层:A
Process finished with exit code 0
可以看到内层循环仅执行了一次。由此,在多层循环下,break结束的是本层循环。
对于,break这个关键字,结束的是本层循环,满足break条件后的循环不会执行。
二、continue
2.1、单层循环
先看下在单层循环下,continue是如何工作的,
package com.my.day02;
import java.util.ArrayList;
import java.util.List;
/**
* 测试continue
* @date 2022/5/23 21:17
*/
public class TestContinue {
public static void main(String[] args) {
endCycle();
}
static void endCycle(){
List<String> list=new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
for(String str:list){
if(str.equals("3")){
continue;
}
System.out.println(str);
}
}
}
执行结果如下,
1
2
4
Process finished with exit code 0
没用打印”3“,由此得出结论,continue在单层循环下,结束的是该循环中的本次循环,后面的循环会继续执行。在多次循环下呐?
2.2、多层循环
在多层循环下,
package com.my.day02;
import java.util.ArrayList;
import java.util.List;
/**
* 测试continue
* @date 2022/5/23 21:17
*/
public class TestContinue {
public static void main(String[] args) {
endMultiCycle();
}
/**
* 多层循环-continue
*/
static void endMultiCycle(){
List<String> list=new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
List<String> innerList=new ArrayList<String>();
innerList.add("A");
innerList.add("B");
innerList.add("C");
for(String str:list){
for(String innerStr:innerList){
if(innerStr.equals("B")){
continue;
}
System.out.println("外层:"+str+",内层:"+innerStr);
}
}
}
}
执行结果是下面这样的,
外层:1,内层:A
外层:1,内层:C
外层:2,内层:A
外层:2,内层:C
外层:3,内层:A
外层:3,内层:C
外层:4,内层:A
外层:4,内层:C
Process finished with exit code 0
可以看到外层循环正常,内层循环只有"B"未打印。由此,在多层循环下,continue结束的是本层循环中的本次循环。
三、return
小伙伴们肯定知道return代表方法的返回,那么用在循环中它是怎么起作用的呐,
3.1、单层循环
package com.my.day02;
import java.util.ArrayList;
import java.util.List;
/**
* 测试return
* @date 2022/5/23 21:40
*/
public class TestReturn {
public static void main(String[] args) {
endCycle();
}
/**
* 单层循环
*/
static void endCycle(){
List<String> list=new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
for(String str:list){
if(str.equals("3")){
return;
}
System.out.println("单层:"+str);
}
System.out.println("方法结束");
}
}
执行结果,
单层:1
单层:2
Process finished with exit code 0
可以看到”方法结束“和”“3”后面的循环都未打印。在单层循环中,return会结束整个方法。
3.2、多层循环
package com.my.day02;
import java.util.ArrayList;
import java.util.List;
/**
* 测试return
* @date 2022/5/23 21:40
*/
public class TestReturn {
public static void main(String[] args) {
endMultiCycle();
}
/**
* 多层循环
*/
static void endMultiCycle(){
List<String> list=new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
List<String> innerList=new ArrayList<String>();
innerList.add("A");
innerList.add("B");
innerList.add("C");
for(String str:list){
for(String innerStr:innerList){
if(innerStr.equals("B")){
return;
}
System.out.println("外层:"+str+",内层:"+innerStr);
}
}
}
}
结果如下,
外层:1,内层:A
Process finished with exit code 0
从上面的结果可以知道,在外层循环的第一次循环时,内层循环到“B”就会执行“return”,这时没再执行后面的。多层循环中,return结束的是整个方法的执行。
四、总结
今天在写程序时用到了多层循环,想结束内层循环,突然对如何结束循环有点把握不准,为此有了本文。
1、break用在结束本层循环,后面的循环不会继续执行;
2、continue用在结束本层循环中的本次循环,后面的循环会跳过本次循环继续执行,直到本层循环结束;
3、return结束的是整个方法;