轉載請保留原文鏈接: http://dashidan.com/article/java/basic/9.html
9.Java流程控制
流程控制語句是編程語言中的核心之一,可以分爲`分支語句`(if, else),`跳轉語句`(switch)和`循環語句`(for, while).
① 分支語句
if
, else
屬於分支語句,意思是根據條件執行語句. if-else 流程控制中,只會執行判斷條件爲真
方法體的代碼,不滿足條件的不執行.
1.最簡單的流程控制if, else
如果if
括號中的條件爲真(true
),則執行if
對應大括號內的語句. 如果if
括號中的條件爲假(false
),則執行else
對應大括號內的語句.
int a = 0;int b = 1;if(a > b){ System.out.println(a);} else { System.out.println(b);}
2.if-else if-else
如果
if
括號中的條件爲真(true
),則執行if
對應大括號內的語句.如果
if
括號中的條件爲假(false
),則順次往下判斷else if
對應大括號內的條件是否爲真.如果條件爲真,則執行大括號對應的語句.
如果條件爲假,則繼續向下判斷.
package com.dashidan.lesson8;/** * 大屎蛋教程網-dashidan.com * <p> * Java教程基礎篇:8. Java流程控制 */public class Demo1 { public static void main(String[] args) { int a = 0; int b = 1; if (a > b) { System.out.println("a > b"); } else if (a == b) { System.out.println("a == b"); } else { System.out.println("a < b"); } }}
輸出:
a < b
② 跳轉語句
switch
是一種條件控制語句, 由case
, break
, default
(可省略)組成.
switch
根據一個傳入的參數,從case
後:
的數據,找到和傳入的參數相同的值.執行對應的case
部分的代碼,到break
結束.結束switch
語句. 如果沒有滿足的case
情況.執行default
對應的語句.結束switch
語句.
代碼示例:
switch (var) { case 1: System.out.println(1); break; case 2: System.out.println(2); break; case 3: System.out.println(3); break; default: System.out.println("default : " + var); break;}
調用方式
package com.dashidan.lesson8;/** * 大屎蛋教程網-dashidan.com * <p> * Java教程基礎篇:8. Java流程控制 * 基礎switch case */public class Demo2 { public static void main(String[] args) { int num = 2; baseSwitch(num); } /** * switch case基本模型 * * @param var 傳入的參數,通過該參數找到case對應的值,執行對應的代碼. */ public static void baseSwitch(int var) { switch (var) { case 1: System.out.println(1); break; case 2: System.out.println(2); break; case 3: System.out.println(3); break; default: System.out.println("default : " + var); break; } System.out.println("switch over."); }}
輸出:
2 switch over.
`case`沒有`break`會怎樣?
case如果沒有break就會繼續往下執行,不中斷switch語句,直到遇到`break`,或者switch結尾.
示例代碼:
package com.dashidan.lesson8;/** * 大屎蛋教程網-dashidan.com * <p> * Java教程基礎篇:8. Java流程控制 * 測試case沒有break的情況 */public class Demo3 { public static void main(String[] args) { int num = 2; testSwitchWithoutBreak(num); } /** * 測試case沒有break的情況 * * @param var 傳入的case參數 */ public static void testSwitchWithoutBreak(int var) { switch (var) { case 1: System.out.println(1); case 2: System.out.println(2); case 3: System.out.println(3); break; default: System.out.println(4); break; } System.out.println("switch over."); }}
輸出:
2 3 switch over.
網上很多文章說`switch`只支持整數型和字符(`char`)型.
那是以前了. JDK7.0開始`switch case`已經支持字符串類型了.
附帶真相的代碼:
package com.dashidan.lesson8;/** * 大屎蛋教程網-dashidan.com * <p> * Java教程基礎篇:8. Java流程控制 * switch case參數爲字符串 */public class Demo4 { public static void main(String[] args) { String str = "a"; testSwitchCaseString(str); } /** * 測試switch case參數爲字符串 * * @param var 傳入的case字符串 */ public static void testSwitchCaseString(String var) { switch (var) { case "a": System.out.println("a"); break; case "b": System.out.println("b"); break; case "c": System.out.println("c"); break; default: System.out.println("default"); break; } System.out.println("switch over."); }}
輸出:
a switch over.
③ 循環語句
循環就是同樣的規則重複執行. Java基本循環控制有3種: for
, while
, do...while
.
1.for循環基本表達方式:
for(定義變量及初始值; 循環繼續執行條件; 循環每執行一次變量的變化){ //循環體 }
示例代碼:
for (int i = 0; i < 3; i++) { System.out.println("i: " + i);}
執行步驟:
第一步設定一個整型變量
i
,並設定初始值i = 0
.第二步判斷
循環繼續執行條件
i<3,是否爲
true,如果爲
true,繼續第三步,如果爲
false`則結束循環.第二步滿足
i<3
(true)時,執行循環體(打印出變量i的值).第三步執行完循環體後,執行
循環每執行一次變量的變化
,爲(i++),這時i
的值加1,從0變爲1.開始循環執行第二步的判斷,直到循環結束.
2.while循環基本表達方式:
先判斷是否結束循環,再執行循環體.
while(循環繼續執行條件){ //循環體 }
示例代碼:
int i = 0;while (i < 3) { System.out.println("i: " + i); i++;}
執行步驟:
第一步判斷
循環繼續執行條件
i<3,是否爲
true,如果爲
true,繼續第二步,如果爲
false`則結束循環.第二步執行循環體(打印出變量i的值, i值加1).
開始循環執行第二步的判斷,直到循環結束.
3.do...while
循環語句
先執行循環體,再判斷是否結束循環,基本表達方式:
do{ //循環體 } while(循環繼續執行條件);
示例代碼:
int i = 0;do { System.out.println("i: " + i); i++;} while (i < 3);
執行步驟:
第一步執行循環體(打印出變量i的值, i值加1).
第二步判斷
循環繼續執行條件
i<3,是否爲
true,如果爲
true,繼續第二步,如果爲
false`則結束循環.開始循環執行第一步的語句,直到循環結束.
4.continue
關鍵字
在循環體中的continue
是從continue處停止當前的邏輯執行, 並且繼續進入下一次循環.
for循環continue示例代碼:
for (int i = 0; i < 3; i++) { if (i == 1) { continue; } System.out.println("i: " + i);}
while循環continue示例代碼:
int i = 0;while (i < 3) { if (i == 1) { continue; } System.out.println("i: " + i); i++;}
在`for`循環和`while`循環中,`continue`語句作用一樣.當`i==1`時,執行了`continue`語句,跳過了後續的語句,所以沒有輸出`i: 1`.
5.break
關鍵字
在循環體中的break
結束當前的循環.
for循環示例代碼:
for (int i = 0; i < 3; i++) { if (i == 1) { break; } System.out.println("i: " + i);}
while循環示例代碼:
int i = 0;while(i < 3){ if(i == 1){ break; } System.out.println("i: " + i); i++;}
6.return
關鍵字
return
語句可以使其從當前方法中退出.返回到調用該方法的語句處.繼續程序的執行. 返回語句有兩種格式:無返回值和有返回值.
return有返回值, 返回一個值給調用該方法的語句.返回值的數據類型必須與方法聲明中的返回值類型一致.
return無返回值, 當方法說明中用
void
聲明無返回值時,不返回任何值.
return返回值
`return`語句通常用在一個方法體的最後,退出該方法並返回一個值. 單獨的`return`語句用在一個方法體的中間時,會產生編譯錯誤,因這會導致後續語句執行不到. 可以通過把`return`語句嵌入某些語句(如:`if…else`)來使程序在未執行完方法中的所有語句時退出.
示例代碼:
package com.dashidan.lesson8;/** * 大屎蛋教程網-dashidan.com * <p> * Java教程基礎篇:8. Java流程控制 * return 語句 */public class Demo6 { public static void main(String[] args) { /** 執行無返回值的方法*/ testReturn(1); int b = testReturnInt(2, 3); System.out.println("執行有返回值的方法: " + b); } public static void testReturn(int value) { System.out.println("執行無返回值的方法: " + value); } public static int testReturnInt(int p0, int p1) { return p0 + p1; }}
輸出:
執行無返回值的方法: 1 執行有返回值的方法: 5
7. 死循環
當程序進入循環中,如果符合繼續執行循環的條件一直爲true, 程序就會無限執行這個循環體的代碼, 導致無法執行下一句語句,這種情況就叫死循環
. 開發過程中需要注意這點. 最簡單的是循環的例子是
while(true){ ... }
示例代碼
package com.dashidan.lesson8;/** * 大屎蛋教程網-dashidan.com * <p> * Java教程基礎篇:8. Java流程控制 * 死循環 */public class Demo7 { public static void main(String[] args) { while (true) { System.out.println("死循環"); } }}
輸出
死循環 死循環 死循環 死循環 死循環 死循環 死循環 ...
④ 示例代碼
package com.dashidan.lesson8;/** * 大屎蛋教程網-dashidan.com * <p> * Java教程基礎篇:8. Java流程控制 * Java循環語句 */public class Demo5 { public static void main(String[] args) { /** for循環基本表達方式*/ System.out.println("for循環基本表達方式"); for (int i = 0; i < 3; i++) { System.out.println("i: " + i); } System.out.println("while循環基本表達方式"); /** while循環基本表達方式*/ int i = 0; while (i < 3) { System.out.println("i: " + i); i++; } System.out.println("do...while循環基本表達方式"); /** do...while循環基本表達方式*/ i = 0; do { System.out.println("i: " + i); i++; } while (i < 3); System.out.println("continue 在for循環中"); /** continue 在for循環中*/ for (i = 0; i < 3; i++) { if (i == 1) { continue; } System.out.println("i: " + i); } System.out.println("continue 在while循環中"); i = 0; while (i < 3) { i++; if (i == 1) { continue; } System.out.println("i: " + i); } /** * 在`for`循環和`while`循環中,`break`語句作用一樣. * 當`i==1`時,執行了`break`語句,結束了循環.所以只有`i: 0`的輸出. */ System.out.println("break在for循環中"); for (i = 0; i < 3; i++) { if (i == 1) { break; } System.out.println("i: " + i); } System.out.println("break在while循環中"); i = 0; while (i < 3) { if (i == 1) { break; } System.out.println("i: " + i); i++; } }}
輸出:
for循環基本表達方式 i: 0 i: 1 i: 2 while循環基本表達方式 i: 0 i: 1 i: 2 do...while循環基本表達方式 i: 0 i: 1 i: 2 continue 在for循環中 i: 0 i: 2 continue 在while循環中 i: 2 i: 3 break在for循環中 i: 0 break在while循環中 i: 0
⑤ 相關文章