Java 筆記 之 流程控制語句( if & switch & for & while)
概述
在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。也就是說程式的流程對執行結果有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現我們要完成的功能。
分類
順序結構
選擇結構
迴圈結構
下面分別說一下每個結構
順序結構
- 概述
是程式中最簡單最基本的流程控制,沒有特定的語法結構,按照程式碼的先後順序,依次執行,程式中大多數的程式碼都是這樣執行的。 - 總的來說:寫在前面的先執行,寫在後面的後執行
- 順序結構圖
public class Demo01 {
public static void main(String[] args) {
System.out.println("開始");
System.out.println("語句A");
System.out.println("語句B");
System.out.println("語句C");
System.out.println("結束");
}
}
選擇結構
概述
選擇結構也被稱為分支結構。
選擇結構有特定的語法規則,程式碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,所以產生選擇,按照不同的選擇執行不同的程式碼Java語言提供了兩種選擇結構語句
if語句
switch語句
選擇結構if
if語句有三種格式
if語句第一種格式:
if(關係表示式) {
語句體
}執行流程
首先判斷關係表示式看其結果是true還是false
如果是true就執行語句體
如果是false就不執行語句體流程圖
``` public class Demo01If { public static void main(String[] args) { System.out.println("開始"); // 定義兩個變數 int a = 10; int b = 20; if (a == b) { System.out.println("a等於b"); } int c = 10; if (a == c) { System.out.println("a等於c"); } System.out.println("結束"); } } ```
if語句第二種格式:
if(關係表示式) {
語句體1;
}else {
語句體2;
}執行流程
首先判斷關係表示式看其結果是true還是false
如果是true就執行語句體1
如果是false就執行語句體2
流程圖
public class Demo02If { public static void main(String[] args) { System.out.println("開始"); // 判斷給定的資料是奇數還是偶數 // 定義變數 int a = 100; // 給a重新賦值 a = 99; if (a % 2 == 0) { System.out.println("a是偶數"); } else { System.out.println("a是奇數"); } System.out.println("結束"); } }
if語句第三種格式:
if (判斷條件1) {
執行語句1
} else if (判斷條件2) {
執行語句2
}
…
else if (判斷條件n) {
執行語句n
} else {
執行語句n+1
}執行流程
首先判斷關係表示式1看其結果是true還是false
如果是true就執行語句體1
如果是false就繼續判斷關係表示式2看其結果是true還是false
如果是true就執行語句體2
如果是false就繼續判斷關係表示式…看其結果是true還是false
…
如果沒有任何關係表示式為true,就執行語句體n+1。流程圖
例:
x和y的關係滿足如下:
x>=3 y = 2x + 1;
-1<=x<3 y = 2x;
x<-1 y = 2x – 1;
根據給定的x的值,計算出y的值並輸出。public class Demo03If { public static void main(String[] args) { // x和y的關係滿足如下: // x>=3 y = 2x + 1; // -1<=x<3 y = 2x; // x<=-1 y = 2x – 1; // 根據給定的x的值,計算出y的值並輸出。 // 定義變數 int x = 5; /* int y; if (x >= 3) { y = 2 * x + 1; } else if (x >= -1 && x < 3) { y = 2 * x; } else if (x < -1) { y = 2 * x - 1; }else { y = 0; } */ /*int y = 0; if (x >= 3) { y = 2 * x + 1; } else if (x >= -1 && x < 3) { y = 2 * x; } else if (x < -1) { y = 2 * x - 1; }*/ int y; if (x >= 3) { y = 2 * x + 1; } else if (x >= -1 && x < 3) { y = 2 * x; } else { y = 2 * x - 1; } System.out.println("y的值是:"+y); } }
總結
第一種格式適合做一種情況的判斷
第二種格式適合做二種情況的判斷
第三種格式適合做多種情況的判斷
選擇結構switch
格式
switch(表示式) {
case 目標值1:
語句體1;
break;
case 目標值2:
語句體2;
break;
…
default:
語句體n+1;
break;
}格式解釋
switch表示這是switch語句
表示式的取值:byte,short,int,char
JDK5以後可以是列舉(今後會講)
JDK7以後可以是String(面向物件講解)
case後面跟的是要和表示式進行比較的值
語句體部分可以是一條或多條語句
break表示中斷,結束的意思,可以結束switch語句
default語句表示所有情況都不匹配的時候,就執行該處的內容,和if語句的else相似。執行流程
首先計算出表示式的值
其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。
最後,如果所有的case都和表示式的值不匹配,就會執行default語句體部分,然後程式結束掉。流程圖
迴圈結構
概述
迴圈有一個開始條件
迴圈語句可以在滿足迴圈條件的情況下,反覆執行某一段程式碼,這段被重複執行的程式碼被稱為迴圈體語句,當反覆執行這個迴圈體時,需要在合適的時候把迴圈判斷條件修改為false,從而結束迴圈,否則迴圈將一直執行下去,形成死迴圈。迴圈語句的組成
迴圈變數初始化 (初始化表示式):一條或者多條語句,這些語句完成一些初始化操作。
迴圈出口(布林表示式):這是一個boolean 表示式,這個表示式能決定是否執行迴圈體。
迴圈邏輯內容(迴圈體):這個部分是迴圈體語句,也就是我們要多次做的事情。
迴圈增量(步進表示式):這個部分在一次迴圈體結束後,下一次迴圈判斷條件執行前執行。通過用於控制迴圈條件中的變數,使得迴圈在合適的時候結束。迴圈結構for
格式
for(初始化表示式①;布林表示式②;步進表示式④){
迴圈體③
}執行流程
執行順序: ①②③④>②③④>②③④… ②不滿足為止。
①負責完成迴圈變數初始化
②負責判斷是否滿足迴圈條件,不滿足則跳出迴圈
③具體執行的語句
④迴圈後,迴圈條件所涉及變數的變化情況流程圖
迴圈結構while
格式基本格式
while(布林表示式) {
迴圈體語句;
}擴充套件格式
初始化表示式①
while(布林表示式②){
迴圈體③
步進表示式④
}
執行流程
執行順序: ①②③④>②③④>②③④… ②不滿足為止。
①負責完成迴圈變數初始化。
②負責判斷是否滿足迴圈條件,不滿足則跳出迴圈。
③具體執行的語句。
④迴圈後,迴圈變數的變化情況。流程圖
迴圈結構dowhile
格式基本格式
do {
迴圈體語句;
}while(布林表示式);擴充套件格式
初始化表示式①
do{
迴圈體③
步進表示式④
}while(布林表示式②);
執行流程
執行順序: ①③④>②③④>②③④… ②不滿足為止。
①負責完成迴圈變數初始化。
②負責判斷是否滿足迴圈條件,不滿足則跳出迴圈。
③具體執行的語句
④迴圈後,迴圈變數的變化情況流程圖
跳轉控制語句
概述
想讓迴圈在某一步的時候結束或者跳過某些資料不要這些資料,現在就做不了這件事情。為了彌補這個缺陷,Java就提供了break,continue來實現控制語句的中斷和跳轉。
break 中斷
continue 繼續
Break
- break的使用場景:
在選擇結構switch語句中
在迴圈語句中
離開使用場景的存在是沒有意義的 - break的作用:
跳出單層迴圈
public class Demo01Break { public static void main(String[] args) { //離開使用場景沒有意義 //break;//break cannot be used outside of a loop or a switch for (int i = 1; i <=10; i++) { //需求:列印完兩次HelloWorld之後結束迴圈 if(i == 3){ break; } System.out.println("HelloWorld"+i); } } }
- break的使用場景:
Continue
- continue的使用場景:
- 在迴圈語句中
- 離開使用場景的存在是沒有意義的
- continue的作用:
單層迴圈對比break,然後總結兩個的區別
break 結束當前迴圈
continue 結束本次迴圈,繼續下一次迴圈
public class Demo02Continue { public static void main(String[] args) { //離開使用場景沒有意義 //continue;//離開使用場景沒有意義 for (int i = 1; i <=10; i++) { //需求:不列印第三次HelloWorld if(i == 3){ continue; } System.out.println("HelloWorld"+i); } } }
- continue的使用場景: