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