Java控制流程02: 三大結構(順序、選擇、迴圈)
順序結構
Java的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行
順序結構是最簡單的演算法結構
語句和語句之間,框與框之間是按從上到下的順序執行的,它是由若干個依次執行的處理步驟組成的,它是任何一個演算法都離不開的一種基本演算法結構
選擇結構
if單選擇結構
我們很多時候需要判斷一個東西是否可行,然後我們才去執行,這樣一個過程在程式中用if語句來表示
語法
if(布林表示式){ //如果布林表示式為true將執行的語句 }
if雙選擇結構
現在有一個需求,公司要收購一個軟體,成功了,給人支付100萬元,失敗了,自己找人開發,這樣的需求,用一個if就搞不定了,我們需要兩個判斷,需要一個雙選擇結構,所以就有了if-else結構。
語法
if(布林表示式){ //如果布林表示式的值為true } else{ //如果布林表示式的值為false }
if多選擇結構
我們發現剛才的結構不符合實際情況,真實的情況還可能存在ABCD,存在區間多級判斷,比如90~100就是A,80~90就是B等等,在生活中我們很多時候的選擇不僅僅只有兩個。所以我們需要一個多選擇結構來處理這類問題。
語法
if(布林表示式1){ //如果布林表示式1的值為true執行程式碼 } else if(布林表示式2){ //如果布林表示式2的值為true執行程式碼 } else if(布林表示式3){ //如果布林表示式3的值為true執行程式碼 } else{ //如果以上布林表示式都不為true執行程式碼 }
巢狀的if結構
使用巢狀的if...else語句是合法的,也就是說你可以在另一個 if 或者else if 語句中使用if或者else if 語句。你也可以像if語句一樣巢狀else if ... else
語法
if(布林表示式1){ //如果布林表示式1的值為true執行程式碼 if(布林表示式2){ //如果布林表示式2的值為true執行程式碼 } }
switch多選擇結構
多選擇結構還有一個實現方式就是switch case語句
switch case 語句判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支
switch語句中的變數型別可以是
- byte、short、int或者是char
- 從JavaSE7開始,switch支援字串String型別了
- case標籤必須是字串或者常量
switch (expression) { case value1: //語句 break; case value2: //語句 break; //可以有任意數量的case語句 default: //語句 }
迴圈結構
while迴圈
while是最基本的迴圈,它的結構為
while(布林表示式){ //迴圈內容 }
- 只要布林表示式為true,迴圈就會一直執行下去
- 我們大多數情況是會讓迴圈停止下來的,我們需要讓一個表示式失效的方式來結束迴圈
- 少部分情況需要迴圈一直執行,比如伺服器的請求響應監聽等
- 迴圈條件一直為true就會造成無限迴圈(死迴圈),我們正常的業務程式設計中應該儘量避免死迴圈,會影響程式效能或者造成程式卡死崩潰
案例:計算1+2+3+...+100
程式碼
public class Demo { public static void main(String[] args) { int i = 0; int sum = 0; while (i<100) { i++; sum += i; } System.out.println(sum); } }
do...while迴圈
對於while而言,如果不滿足條件,則不能進入迴圈,但有時候我們需要即使不滿足條件,也至少執行一次
do...while迴圈和while迴圈相似,不同的是,do...while迴圈至少會執行一次
do{ //程式碼語句 } while(布林表示式);
while和do...while的區別
- while先判斷後執行,do...while先執行後判斷
- do...while總是保證迴圈體會被至少執行一次,這是它們的主要差別
案例:計算1+2+3+...+100
程式碼
public class Demo { public static void main(String[] args) { int i = 0; int sum = 0; do { i++; sum += i; } while (i<100); System.out.println(sum); } }
for迴圈
雖然所有迴圈結構中都可以用while或者do...while表示,但Java提供了另一種語句——for迴圈,使一些迴圈結構變得更加簡單。
for迴圈語句是支援迭代的一種通用結構,是最有效、最靈活的迴圈結構
for迴圈執行的次數是在執行前確定的。語法格式如下
1.for迴圈格式: for(初始化表示式1;布林表示式2;步進表示式4){ 迴圈體3; } 其它語句; 2.執行流程: 1,2(迴圈條件:true),3,4 --> 2(迴圈條件:true),3,4 --> ... --> 直到布林表示式2(迴圈條件:false)結束for迴圈,執行for迴圈後面的其它語句
無限迴圈(死迴圈)
for(;;)
列印九九乘法表
public class Demo { public static void main(String[] args) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "= " + i * j + "\t"); } System.out.println(); } } }
輸出結果
增強for迴圈
Java5引入的一種主要用於陣列或集合的增強for迴圈
語法格式
for(宣告語句:表示式){ //程式碼語句 }
宣告語句:宣告新的區域性變數,該變數的型別必須和陣列/集合元素的型別匹配,其作用域限定在迴圈語句塊。其值與此時元素的值相等。
表示式:表示式是要訪問的陣列/集合名,或者是返回值為陣列/集合的方法。
程式碼
int[] arr = {1,2,3}; for (int i : arr) { System.out.println(i); } ArrayList<Integer> arrayList = new ArrayList<>(); arrayList.add(1); arrayList.add(2); for (Integer integer : arrayList) { System.out.println(integer); }