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結束的是整個方法;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章