在平時的開發過程中,經常會用到循環,在寫循環的過程中會有很多判斷條件及邏輯,你知道如何結束一個循環嗎?在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結束的是整個方法;