天天看點

JavaSe流程控制04:循環(筆記)

視訊學習位址

點我跳轉ψ(`∇´)ψ

前言

相應的語句需要執行多次,那麼循環結構就誕生了,在Java5中引入了一種主要用于數組的增強型for循環。

while循環

JavaSe流程控制04:循環(筆記)
  • 隻要布爾值為true,循環就會一直執行下去
  • 大多數情況是會讓循環停止下來的,需要一個讓表達式失效的方式來結束循環
  • 少部分情況需要循環一直執行,比如伺服器的請求響應監聽
  • 循環條件一直為true就會造成無限死循環,正常的業務程式設計中應該要避免死循環,會影響程式性能或者造成程式卡死崩潰

do…while循環

對于while語句而言,如果不滿足條件,則不會循環,但有時候我們需要即使不滿足條件,也至少要執行一次,這個時候do…while就誕生了。

JavaSe流程控制04:循環(筆記)

while和do…while的差別

  • while先判斷後執行,do…while先執行後判斷
  • do…while總是保證循環體會被至少執行一次,這是它們的主要差别

for循環

JavaSe流程控制04:循環(筆記)

雖然所有的循環結構都可以用while和do…while表示,但Java提供了另一種語句,for循環,使一些循環結構變得更加簡單,它是一種支援疊代的通用結構,是最有效、最靈活的循環結構。

計算0到100的奇數和偶數的和

public class Demo {
    public static void main(String[] args) {
        int oddsum = 0;
        int evensum = 0;

        for (int i = 0; i <= 100; i++) {
            if(i%2!=0){
                oddsum+=i;
            }else {
                evensum+=i;
            }
        }

        System.out.println("奇數:"+oddsum);
        System.out.println("偶數:"+evensum);
    }
}
           

用while或for循環輸出1-1000之前被5整除的數,并每行輸出3個

public class Demo {
    public static void main(String[] args) {
        for (int i = 0; i <= 1000; i++) {
            if(i%5==0){
                System.out.print(i+"\t");
            }
            if(i%(5*3)==0){
                System.out.println();   //System.out.print("/n"); 也可以
            }
        }
        //pinrt     輸出不會換行
        //pinrtln   輸出會換行
    }
}
           

列印九九乘法表

public class Demo {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {        //1 2 3 4 5...
            for (int i1 = 1; i1 <= i; i1++) { //1 1 2 1 2 3 1 2 3 4 1 2 3 4 5...
                System.out.print(i1+"*"+i+"="+i*i1+"\t");       
            }
            System.out.println();
        }
    }
}
           

增強for循環

public class Demo {
    public static void main(String[] args) {
        int[] numbers = {10,20,30,40,50};   //定義一個數組 注意:數組的序數是從0開始的

        for (int i = 0; i < 5; i++) {
            System.out.println(numbers[i]);
        }

        for (int x:numbers){        //與上面是一樣的
            System.out.println(x);
        }
    }
}
           

break

break在任何循環語句的主題部分,均可用break控制循環的流程,break用于強行退出循環,不執行循環中剩餘的語句(break語句也在switch語句中使用)

public class Demo {
    public static void main(String[] args) {
        int i = 0;
        while(i < 100){
            i++;
            System.out.println(i);
            if (i == 30){   //到30就進行一個退出循環,但不會影響後續操作
                break;
            }
        }
        System.out.println(123);    //這裡會繼續輸出
    }
}
           

continue

continue語句用在循環語句中,用于終止某次循環過程,即跳出循環中尚未執行的語句,接着進行下一次是否執行循環的判定。

public class Demo {
    public static void main(String[] args) {
        int i = 0;
        while(i < 100){
            i++;
            if (i % 10 == 0){   //i除以10的餘數等于0,都不執行,那麼就是10,20....90都跳出這一次循環
                System.out.println();
                continue;
            }
            System.out.print(i);
        }
    }
}
           

關于goto關鍵字

goto關鍵字很早就在程式設計語言中出現,盡管goto任是Java的一個保留字,但并未在語言中得到正式适應,Java沒有goto,然而,在break和continue這兩個關鍵字的身上,我們任然可以看出一些goto的影子,帶标簽的break和continue,标簽是隻後面跟一個冒号的辨別符,例如:label:,對Java來說唯一用到标簽的地方是在循環語句之前,而在循環之前設定标簽的唯一理由是:我們希望在其中嵌套另一個循環,由于break和continue關鍵字通常隻中斷目前循環,但若随同标簽使用,他們就會中斷存在标簽的地方。

public class Demo {
    //不建議使用
    public static void main(String[] args) {
        int count = 0;
        outer:for (int i = 101; i < 150; i++) {
            for (int j = 2; j < i/2; j++) {
                if (i % j == 0){
                    continue outer;
                }
            }
            System.out.println(i);
        }
    }
}