国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Java 的流程控制是什么樣子的

開發 后端
在這個過程里,你會發現你最終吃什么,取決于你的選擇。你要吃蘋果,你從冰箱里取蘋果,你要吃香蕉,你從冰箱里取香蕉。按選擇來控制,這也是一種流程。

[[401840]]

本文轉載自微信公眾號「蝸牛互聯網」,作者蝸牛互聯網。轉載本文請聯系蝸牛互聯網公眾號。

本文大綱:

為什么需要流程控制

平時我們做一件事,一般都會有個固定流程。

比如你想吃蘋果,你需要找到冰箱,打開冰箱門,取出蘋果,回到沙發上,然后開吃。

這個順序基本不能調換,你不能在打開冰箱門之前去取蘋果。按順序來控制,這是一種流程。

那如果你想吃香蕉,你會發現流程類似,只是從冰箱里取出香蕉就好了。

在這個過程里,你會發現你最終吃什么,取決于你的選擇。你要吃蘋果,你從冰箱里取蘋果,你要吃香蕉,你從冰箱里取香蕉。按選擇來控制,這也是一種流程。

那還有種情況,一根香蕉不夠你吃,你還想吃幾根,直到你不想吃,那你就會重復上面的流程,當你吃飽的時候,就終止了。這種重復執行按照某個條件來終止的控制,也是一種流程。

計算機是現實世界的電子化表達,那么在計算機的世界里,程序運行也需要這樣的流程控制。

無論是機器語言,還是匯編語言,還是高級程序設計語言,都會涉及這個概念,它決定了你寫的代碼會按照怎樣的路徑運行,也決定著計算機和用戶之間的交互方式。

我們看看 Java 語言的流程控制是什么樣的?

輸入和輸出

我們編程都是為了解決某個實際問題,比如寫一個加法程序,我們是為了獲得兩個數的和是多少。

那你會發現,程序有個重要的特點,就是接收輸入,然后進行處理,最后輸出結果。

那 Java 是怎么接收輸入的呢?

Scanner 介紹

Java 提供了 Scanner 工具類,我們可以通過這個工具類來獲取用戶的輸入。基本的語法如下:

  1. // 用標準的輸入流構建一個 Scanner 對象 
  2. Scanner scanner = new Scanner(System.in); 
  3.  
  4. // 讀取輸入的一行并獲取字符串 
  5. String nextLineStr = scanner.nextLine(); 
  6.  
  7. // 讀取輸入的字符串,會忽略掉字符串兩邊的空格,因為空格起分隔符或結束符的作用 
  8. String nextStr = scanner.next(); 
  9.  
  10. // 讀取輸入的整數,非整數會拋異常(InputMismatchException) 
  11. int nextInt = scanner.nextInt(); 

System.in 是標準的輸入流,使用它可以接收鍵盤輸入或其他指定數據源的數據。

Scanner 是一個簡單的文本掃描器,通過它可以解析基本類型和字符串。new Scanner(System.in) 可以構建出一個掃描器對象,scanner.nextLine()可以讀取輸入的一行并獲取字符串,scanner.next() 也可以獲取字符串,不過不能支持兩邊有空格的字符串,scanner.nextInt() 可以讀取輸入的整數,int 換成其他基本類型同樣也適用。

Scanner 使用

我們可以看下樣例代碼:

  1. package cn.java4u.flowcontrol; 
  2.  
  3. import java.util.Scanner; 
  4.  
  5. /** 
  6.  * 輸入演示 
  7.  * 
  8.  * @author 蝸牛 
  9.  * @from 公眾號:蝸牛互聯網 
  10.  */ 
  11. public class InputDemo { 
  12.  
  13.     public static void main(String[] args) { 
  14.  
  15.         // 用標準的輸入流構建一個 Scanner 對象 
  16.         Scanner scanner = new Scanner(System.in); 
  17.  
  18.         // 讀取輸入的一行并獲取字符串 
  19.         String nextLineStr = scanner.nextLine(); 
  20.  
  21.         // 讀取輸入的字符串,會忽略掉字符串兩邊的空格,因為空格起分隔符或結束符的作用 
  22.         String nextStr = scanner.next(); 
  23.  
  24.         // 讀取輸入的整數,非整數會拋異常(InputMismatchException) 
  25.         int nextInt = scanner.nextInt(); 
  26.  
  27.         System.out.println("---以下為打印值---"); 
  28.         System.out.println("nextLineStr:" + nextLineStr); 
  29.         System.out.println("nextStr:" + nextStr); 
  30.         System.out.println("nextInt:" + nextInt); 
  31.  
  32.     } 

你會發現,樣例代碼里有一個 import java.util.Scanner; ,Scanner 是 Java 類庫里的一個類,所以需要 import 語法引入一下,才能使用。

樣例代碼有三次控制臺輸入,我們輸入以下數據看下輸出:

  1. 我是蝸牛    
  2.    蝸牛666     

第一行輸入的字符串后邊有空格,第二行輸入的字符串前后都有空格。輸出如下:

---以下為打印值---

  1. ---以下為打印值--- 
  2. nextLineStr:我是蝸牛    
  3. nextStr:蝸牛666 
  4. nextInt:8 

你會發現 nextLineStr 后邊的空格還在,nextStr 前后的空格都沒有了。

我們再看一種輸入:

  1. 我是蝸牛    
  2.    蝸牛666  7 

當我們輸入兩行后,再回車,程序就直接輸出結果了:

  1. nextLineStr:我是蝸牛    
  2. nextStr:蝸牛666 
  3. nextInt:7 

由此可見 nextLine()和 next() 之間的不同,nextInt() 是 next() 基礎上的類型轉換,特點可以認為和 next() 一致。

  1. 起始符 分隔符 特點 
  2. nextLine()  任何字符    回車(Enter)   可以獲得帶空格的字符串 
  3. next()  非空白字符   空格  不能獲得帶空格的字符串 

輸出

在之前的代碼中,我們都是通過 System.out.println() 的方式,把內容輸出到控制臺的。

其中 System.out 是標準的輸出流,通過它不只可以做顯示輸出,也可以寫入到指定的輸出目標,比如文件。

println 是 print line 的縮寫,表示輸出并換行。如果輸出不想換行,可以使用 print() 。此外,Java 也支持用 printf() 進行格式化輸出,以方便閱讀。

以下是示例代碼:

  1. package cn.java4u.flowcontrol; 
  2.  
  3. /** 
  4.  * 輸出演示 
  5.  * @author 蝸牛 
  6.  * @from 公眾號:蝸牛互聯網 
  7.  */ 
  8. public class OutputDemo { 
  9.  
  10.     public static void main(String[] args) { 
  11.  
  12.         // 輸出并換行 
  13.         System.out.println("---開始演示---"); 
  14.         // 輸出不換行 
  15.         System.out.print("打印不換行["); 
  16.         System.out.print("1 "); 
  17.         System.out.print("2 "); 
  18.         System.out.print("3"); 
  19.         System.out.print("]"); 
  20.         // 只換行 
  21.         System.out.println(); 
  22.         // 格式化輸出 
  23.         double d = 66600000.8888; 
  24.         // 不進行格式化的處理結果:6.66000008888E7 
  25.         System.out.println("不進行格式化的處理結果:" + d); 
  26.         System.out.printf("默認格式化:%f", d); 
  27.         System.out.printf("; 無小數格式化:%.0f", d); 
  28.         System.out.printf("; 一位小數格式化:%.1f", d); 
  29.         System.out.printf("; 兩位小數格式化:%.2f", d); 
  30.     } 

輸出結果如下:

  1. ---開始演示--- 
  2. 打印不換行[1 2 3] 
  3. 不進行格式化的處理結果:6.66000008888E7 
  4. 默認格式化:66600000.888800; 無小數格式化:66600001; 一位小數格式化:66600000.9; 兩位小數格式化:66600000.89 

%f 就是 Java 為浮點數提供的格式化功能的占位符,系統默認會把浮點數格式化成 6 位小數輸出,當然你也可以仿照樣例指定小數位輸出。

除了浮點數,Java 的格式化功能還提供了多種占位符,可以把各種數據類型格式化成指定的字符串,以下是常用的占位符:

占位符 說明
%d 格式化輸出整數
%x 格式化輸出十六進制整數
%f 格式化輸出浮點數
%e 格式化輸出科學計數法表示的浮點數
%s 格式化字符串

注意,由于 % 表示占位符,因此,連續兩個 %% 表示一個 % 字符本身。

三種流程控制結構

知道了輸入和輸出在 Java 世界里的表達方式,我們再看下在程序處理中涉及到的流程控制有哪些。

順序結構

程序基本的流程結構就是順序結構,Java 也是如此。如果沒有特別指明,程序都是按照順序一行一行執行。

選擇結構

但很多時候,我們需要判斷一個東西是否可行,然后才去執行一段邏輯。比如加法程序,我們得要求參與運算的值是數字而不能是字符串。

那這樣的流程控制可以通過選擇結構來實現。

if單選擇結構

如果只是想針對某個條件特殊處理下,處理前后的邏輯不變,此時可以使用if單選擇結構。

語法如下:

  1. if(布爾表達式){ 
  2.  //布爾表達式結果為 true 時執行的語句 

以下是打印兩個整數的最大值的示例代碼:

  1. package cn.java4u.flowcontrol; 
  2.  
  3. import java.util.Scanner; 
  4.  
  5. /** 
  6.  * if 單選擇結構 
  7.  * 
  8.  * @author 蝸牛 
  9.  * @from 公眾號:蝸牛互聯網 
  10.  */ 
  11. public class IfSingleChoiceDemo { 
  12.  
  13.     public static void main(String[] args) { 
  14.  
  15.         // 用標準的輸入流構建一個 Scanner 對象 
  16.         Scanner scanner = new Scanner(System.in); 
  17.  
  18.         System.out.println("請輸入整數a:"); 
  19.         int a = scanner.nextInt(); 
  20.  
  21.         System.out.println("請輸入整數b:"); 
  22.         int b = scanner.nextInt(); 
  23.  
  24.         // 初始化最大值為 a 的值 
  25.         int max = a; 
  26.  
  27.         // b 比 a 大的請求下,把 b 的值賦給 max 
  28.         if (a < b) { 
  29.             max = b; 
  30.         } 
  31.         System.out.println("max:" + max); 
  32.     } 

我們用數字 a 初始化了變量 max,只有發現 b 比 a 大的時候,才會把 b 的值賦給 max。也就是 當 a=10 并且 b=9 時,if 花括號里的邏輯是走不到的,當 a=10 并且 b=11 時,if 花括號里的邏輯會走到。

if雙選擇結構

有時候我們遇到某個條件,會有兩種不同的邏輯,此時可以使用if雙選擇結構。

語法如下:

  1. if(布爾表達式){ 
  2.  //布爾表達式結果為 true 時執行的語句 
  3. }else
  4.  //布爾表達式結果為 false 時執行的語句 

以下是打印整數絕對值的示例代碼:

  1. package cn.java4u.flowcontrol; 
  2.  
  3. import java.util.Scanner; 
  4.  
  5. /** 
  6.  * if雙選擇結構 
  7.  * 
  8.  * @author 蝸牛 
  9.  * @from 公眾號:蝸牛互聯網 
  10.  */ 
  11. public class IfDoubleChoiceDemo { 
  12.     public static void main(String[] args) { 
  13.  
  14.         // 用標準的輸入流構建一個 Scanner 對象 
  15.         Scanner scanner = new Scanner(System.in); 
  16.  
  17.         System.out.println("請輸入整數a:"); 
  18.         //10,-10 切換 
  19.         int a = scanner.nextInt(); 
  20.  
  21.         // 初始化絕對值變量 
  22.         int abs
  23.  
  24.         if (a < 0) { 
  25.             abs = -a; 
  26.         } else { 
  27.             abs = a; 
  28.         } 
  29.         System.out.println("abs:" + abs); 
  30.     } 

我們用 abs 初始化了絕對值變量,針對待判定的整數 a,當它的值是 10 或者 -10 時,會走 if 的不同分支執行不一樣的邏輯。

if多選擇結構

當我們遇到的條件不只一個的時候,我們執行邏輯的情況可能會超過兩個,此時可以使用if多選擇結構。

語法如下:

 

  1. if(布爾表達式1){ 
  2.  //布爾表達式1結果為 true 時執行的語句 
  3. }else if(布爾表達式2){ 
  4.  //布爾表達式2結果為 true 時執行的語句 
  5. }     
  6. else
  7.  //布爾表達式結果為 false 時執行的語句 

以下是百分制成績評優良差的示例代碼:

  1. package cn.java4u.flowcontrol; 
  2.  
  3. import java.util.Scanner; 
  4.  
  5. /** 
  6.  * if 多選擇結構 
  7.  * 
  8.  * @author 蝸牛 
  9.  * @from 公眾號:蝸牛互聯網 
  10.  */ 
  11. public class IfMultiChoiceDemo { 
  12.  
  13.     public static void main(String[] args) { 
  14.         // 用標準的輸入流構建一個 Scanner 對象 
  15.         Scanner scanner = new Scanner(System.in); 
  16.  
  17.         System.out.println("請輸入你的成績(百分制):"); 
  18.  
  19.         //58,68,88,96,120 切換 
  20.         int score = scanner.nextInt(); 
  21.  
  22.         if (score > 0 && score < 60) { 
  23.             System.out.println("不合格"); 
  24.         } else if (score >= 60 && score < 80) { 
  25.             System.out.println("合格"); 
  26.         } else if (score >= 80 && score < 90) { 
  27.             System.out.println("良好"); 
  28.         } else if (score >= 90 && score <= 100) { 
  29.             System.out.println("優秀"); 
  30.         } else { 
  31.             System.out.println("非法輸入"); 
  32.         } 
  33.     } 

成績分數評優良差的程序存在區間多級判斷,比較適合if多選擇結構。

if嵌套選擇結構

當我們遇到的條件里,又能拆出多個條件,有不同的執行邏輯時,可以使用if嵌套選擇結構。if嵌套選擇結構可以認為是if多選擇結構的變種。

語法如下:

  1. if(布爾表達式1){ 
  2.  //布爾表達式1結果為 true 時執行的語句 
  3.      
  4.     if(布爾表達式2){ 
  5.         //布爾表達式2結果為 true 時執行的語句 
  6.     } 

以下是百分制成績評優良差變形后的示例代碼:

  1. package cn.java4u.flowcontrol; 
  2.  
  3. import java.util.Scanner; 
  4.  
  5. /** 
  6.  * if嵌套選擇結構 
  7.  * 
  8.  * @author 蝸牛 
  9.  * @from 公眾號:蝸牛互聯網 
  10.  */ 
  11. public class IfNestChoiceDemo { 
  12.     public static void main(String[] args) { 
  13.  
  14.         // 用標準的輸入流構建一個 Scanner 對象 
  15.         Scanner scanner = new Scanner(System.in); 
  16.  
  17.         System.out.println("請輸入你的成績(百分制):"); 
  18.  
  19.         //58,68,88,96,120 切換 
  20.         int score = scanner.nextInt(); 
  21.  
  22.         if (score >= 0 && score <= 100) { 
  23.  
  24.             if (score < 60) { 
  25.                 System.out.println("不合格"); 
  26.             } else if (score < 80) { 
  27.                 System.out.println("合格"); 
  28.             } else if (score < 90) { 
  29.                 System.out.println("良好"); 
  30.             } else { 
  31.                 System.out.println("優秀"); 
  32.             } 
  33.  
  34.         } else { 
  35.             System.out.println("非法輸入"); 
  36.         } 
  37.     } 

和普通的 if多選擇結構 的代碼不同在于,if嵌套選擇做了兩層選擇,第一層是輸入的合法性,第二層是對成績做分級。

switch選擇結構

我們有時候遇到的條件比較有限,并且就是判斷一個變量與一系列中某個值是否相等,然后命中不同的值,會走向不同的邏輯。此時就可以使用switch選擇結構。

語法如下:

  1. switch(var){ 
  2.     case value1: 
  3.         // var 命中 value1 時執行的語句 
  4.         break; 
  5.     case value2: 
  6.         // var 命中 value2 時執行的語句 
  7.         break; 
  8.     //可以有任意數量的case語句 
  9.     // 默認的請求,上邊都沒命中,會走到該分支 
  10.     default
  11.         //以上 case 都未命中或者未 break 會走到這里 

我們如果把上邊提到的幾個程序打包給用戶使用,那就可以通過 switch 來提供統一的入口,引導用戶鍵入1來路由到求最大值的程序里,鍵入2路由到求絕對值的程序里,鍵入3路由到成績分數評優良差的程序里。示例代碼如下:

  1. package cn.java4u.flowcontrol; 
  2.  
  3. import java.util.Scanner; 
  4.  
  5. /** 
  6.  * switch選擇結構 
  7.  * 
  8.  * @author 蝸牛 
  9.  * @from 公眾號:蝸牛互聯網 
  10.  */ 
  11. public class IfSwitchChoiceDemo { 
  12.     public static void main(String[] args) { 
  13.  
  14.         // 用標準的輸入流構建一個 Scanner 對象 
  15.         Scanner scanner = new Scanner(System.in); 
  16.  
  17.         System.out.println("請選擇你要運行的程序(鍵入1表示求最大值,鍵入2表示求絕對值,鍵入3表示成績分數評優良差):"); 
  18.  
  19.         int choice = scanner.nextInt(); 
  20.  
  21.         switch (choice) { 
  22.             case 1: 
  23.                 System.out.println("--開始求兩個數的最大值--"); 
  24.                 IfSingleChoiceDemo.main(null); 
  25.                 break; 
  26.             case 2: 
  27.                 System.out.println("--開始求絕對值--"); 
  28.                 IfDoubleChoiceDemo.main(null); 
  29.                 break; 
  30.             case 3: 
  31.                 System.out.println("--開始成績分數評優良差--"); 
  32.                 IfMultiChoiceDemo.main(null); 
  33.                 break; 
  34.             default
  35.                 System.out.println("非法輸入"); 
  36.         } 
  37.     } 

跑一下這個程序,鍵入 1 你會發現開始執行求最大值的子程序里,最大值打印后整個程序就結束了,這說明 break 起到了當前分支阻斷程序的作用。一旦命中 break 代碼,后邊的 case 2、case 3、default 都不會走到。

當然不是每個 case 都需要有 break 的,當你有兩個 case 的邏輯一致,就可以忽略 break 進行 case 合并,比如當鍵入 4 的時候,我要求和 3 效果一致,可以改成下面這樣:

  1. case 3: 
  2. case 4: 
  3.     System.out.println("--開始成績分數評優良差--"); 
  4.     IfMultiChoiceDemo.main(null); 
  5.     break; 

沒有 break 的 case 邏輯會穿透到下一個 case,使用下一個 case 的代碼邏輯。

注意,switch選擇結構是if多選擇結構特殊場景下的變種,JavaSE 8 支持的變量類型有 byte、short、int、char、String、ENUM。

循環結構

程序有時候會重復運行一段邏輯,如果按順序結構+選擇結構來組織代碼的話,這種情況下需要寫很多重復的代碼才能實現。比如我要得到從 1 到 5 的和:

  1. 1+2+3+4+5=? 

我的代碼可能就是這樣:

  1. package cn.java4u.flowcontrol; 
  2.  
  3. /** 
  4.  * while 循環結構演示 
  5.  * 
  6.  * @author 蝸牛 
  7.  * @from 公眾號:蝸牛互聯網 
  8.  */ 
  9. public class WhileCircleDemo { 
  10.  
  11.     public static void main(String[] args) { 
  12.  
  13.         int a = 1; 
  14.         int sum = 0; 
  15.  
  16.         System.out.println("當前a的值為:" + a); 
  17.         // a 累加到 sum 中 
  18.         sum = sum + a; 
  19.         // a 自身加一 
  20.         a = a + 1; 
  21.  
  22.         System.out.println("當前a的值為:" + a); 
  23.         sum = sum + a; 
  24.         a = a + 1; 
  25.  
  26.         System.out.println("當前a的值為:" + a); 
  27.         sum = sum + a; 
  28.         a = a + 1; 
  29.  
  30.         System.out.println("當前a的值為:" + a); 
  31.         sum = sum + a; 
  32.         a = a + 1; 
  33.  
  34.         System.out.println("當前a的值為:" + a); 
  35.         sum = sum + a; 
  36.          
  37.         System.out.println("sum:" + sum); 
  38.  
  39.     } 

你會發現重復邏輯很多,在 a = 5 的時候,累加才結束,結果才輸出。那如果有種機制能把這些重復的邏輯用簡潔的方式表達,那寫代碼就會方便很多。

這種機制就是循環結構。

while循環結構

最常用的循環結構是 while 循環,語法如下:

  1. while(布爾表達式){ 
  2.  //循環內容 
  • 只要布爾表達式為 true,循環就會一直執行下去。
  • 我們大多數情況是會讓循環停止下來的,因此需要一個讓布爾表達式為 false 的方式來停止循環。
  • 少部分情況時需要循環一直執行,比如服務器的請求響應監聽等。
  • 循環條件如果一直是 true,就會造成無限循環,應盡量避免這種情況,否則會造成程序卡死崩潰。

用 while 來表達求和代碼如下:

  1. // 初始化值 
  2. a = 1; 
  3. sum = 0; 
  4.  
  5. while (a <= 5) { 
  6.     // a 累加到 sum 中 
  7.     sum += a; 
  8.     // a 自身加一 
  9.     a++; 
  10. System.out.println("while sum:" + sum); 

do while循環結構

觀察 while 語句,你會發現,只要不滿足條件,就不能進入循環。但有時候我們需要即使不滿足條件,也至少要執行一次。那此時用 do while 循環就比較合適,語法如下:

  1. do{ 
  2.  //循環內容 
  3. }where(布爾表達式) 
  • 不同于 while 循環結構的先判斷后執行的方式,do while 循環結構是先執行后判斷。
  • do while 中的循環內容會被至少執行一次。

用 do while 來表達求和代碼如下:

  1. // 初始化值 
  2. a = 1; 
  3. sum = 0; 
  4.  
  5. do { 
  6.     // a 累加到 sum 中 
  7.     sum += a; 
  8.     // a 自身加一 
  9.     a++; 
  10. } while (a <= 5); 
  11. System.out.println("do while sum:" + sum); 

for循環結構

在求和代碼中,我們會發現,a 就像一個計數器,通過 a = 1 初始化一個值,然后在每次循環中加一來當成我們求和時要加的那個數,a <= 5 作為計數器循環檢測條件,決定了我們的累加是加到 5 還是 100,只要改成 a <= 100,累加到 100 就不會再執行循環。

這種其實是迭代處理的通用結構:初始值、終止條件和計數器。于是 Java 提供了 for 循環結構,用來簡化這種場景下的 while 循環,語法如下:

  1. for(計數器初始化; 布爾表達式; 循環后更新計數器){ 
  2.  //循環內容 

用 for 來表達求和代碼如下:

  1. sum = 0; 
  2. for (a = 1; a <= 5; a++) { 
  3.     sum += a; 
  4. System.out.println("for sum:" + sum); 

for each循環結構

有些時候,我們拿到一堆數處理,其實并不關心他們的次序,只要能遍歷到就可以。比如數組里的幾個值,我不關心值的索引,我只想知道這些值的總和是多少。此時就可以用 for each 循環結構,它可以很簡單的遍歷數組,語法如下:

  1. for(元素類型 元素變量 : 數組或迭代器){ 
  2.  //循環內容 
  • for each 是對 for 特殊場景下的簡化,處理對象是數組或者迭代器對象。
  • 和 for 循環結構相比,for each 循環結構不再體現計數器的初始化和更新,因此也無法指定遍歷順序,也不能獲取數組或迭代器索引。

用 for each 來表達求和代碼如下:

  1. int[] array = {1, 2, 3, 4, 5}; 
  2. sum = 0; 
  3. for (int temp : array) { 
  4.     sum += temp
  5. System.out.println("for each sum:" + sum); 

循環結構的中斷

循環結構都會有個布爾表達式作為循環檢測條件,如果布爾表達式為 false 時,就會終止循環,這是循環中斷的一種方式。

除此之外,Java 還提供了另外兩種循環結構中斷的方式。

一種是 break。語法如下:

  1. 循環結構{ 
  2.     //中斷前代碼 
  3.     if(中斷布爾表達式){ 
  4.   break; 
  5.     } 
  6.     //中斷后代碼 
  • 中斷布爾表達式返回 true 時,命中 break ,直接退出整個循環結構,中斷后代碼不再執行。

求和示例代碼如下:

  1. int a = 1; 
  2. int sum = 0; 
  3. while (a <= 5) { 
  4.  
  5.     // a 為 3 的時候中斷 
  6.     if (a == 3) { 
  7.         break; 
  8.     } 
  9.  
  10.     // a 累加到 sum 中 
  11.     sum += a; 
  12.     // a 自身加一 
  13.     a++; 
  14. System.out.println("while sum:" + sum); 

實際對 1 和 2 進行求和,因為 a 為 3 的時候退出了循環。

注意:循環結構如果存在嵌套,break 只會退出當前層循環結構,不會退出外層循環結構。

另一種是 continue,語法如下:

  1. 循環結構{ 
  2.     //中斷前代碼 
  3.     if(中斷布爾表達式){ 
  4.   continue
  5.     } 
  6.     //中斷后代碼 
  • 中斷布爾表達式返回 true 時,命中 continue ,該循環結構當次調用中斷,中斷后代碼當次不再執行,進入循環結構的下次調用。

示例代碼如下:

  1. int i = 0; 
  2. while (i <= 5) { 
  3.     i++; 
  4.     // i 為 3 的時候中斷 
  5.     if (i == 3) { 
  6.         System.out.println("命中 continue"); 
  7.         continue
  8.     } 
  9.     System.out.println("i=" + i); 

輸出:

  1. i=1 
  2. i=2 
  3. 命中 continue 
  4. i=4 
  5. i=5 
  6. i=6 

會發現 i 的值為 3 的時候命中 continue 邏輯,當次循環不會繼續往下走,但會進入下一次循環。

簡單講,break 跳出當前層循環,循環結構中止,continue 跳出當次循環調用,當次調用中止。二者都要配合 if 使用。

小結

 

本文從現實案例引出了流程控制的概念,映射到編程領域,我們把一個程序的執行,抽象成輸入-處理-輸出的過程。然后介紹了在 Java 的世界里,輸入和輸出的實現方式,接著講解了在處理的過程中,常用的三種流程控制結構:順序結構、選擇結構和循環結構,并列出了演示代碼。讀者可以仿照案例實踐一把,相信你會有更深刻的印象。感謝你的閱讀和分享,歡迎留言互動和點贊!

 

責任編輯:武曉燕 來源: 蝸牛互聯網
相關推薦

2022-10-10 08:47:49

ITCIO數據

2021-02-19 10:14:49

云計算公共云

2021-05-08 13:11:58

物聯網IOT物聯網技術

2024-03-04 09:19:33

CSSbackground前端

2021-11-29 07:42:44

CSS 技巧CSS 繪圖技巧

2020-11-04 11:17:20

好代碼程序員整潔

2014-04-08 09:56:30

銷售易CRM

2021-09-30 19:12:46

通信網絡ADSL

2022-11-18 10:17:10

2019-09-03 14:57:33

智慧城市虛擬新加坡3D

2023-04-19 15:03:52

2021-03-24 15:25:44

AI

2018-01-16 15:02:20

存儲RAIDSAN

2021-10-04 15:46:31

網絡通信5G

2023-02-17 14:40:06

物聯網供應鏈

2012-10-29 15:45:51

2022-03-15 16:19:13

物聯網物聯網 2.0IoT

2011-10-10 11:04:54

2020-07-27 10:45:44

廣域網WAN遠程工作

2012-07-12 13:27:56

互聯網
點贊
收藏

51CTO技術棧公眾號

丁香婷婷深情五月亚洲| 激情福利在线| 欧美激情精品久久久久久变态| 国产亚洲精品7777| 精品大片一区二区| 色呦呦在线观看视频| 亚洲欧洲日产国码无码久久99| 日本一区二区不卡| 欧美一区二区三区爱爱| 91麻豆精东视频| 最新国产精品久久久| 日韩免费va| 伊大人久久香线焦宗合一75大| 男人的天堂成人| 国产精品h在线观看| 精品国产污污免费网站入口 | 在线观看免费高清完整| 欧妇女乱妇女乱视频| 成人网欧美在线视频| 日韩av一卡二卡| 一区二区三区四区蜜桃| 精品一区二区三区免费播放| 国产精品videossex| 成人在线直播| 高清孕妇孕交╳╳交| 中文字幕久精品免| 国产日韩精品在线观看| 在线观看国产精品淫| 欧美伊人久久大香线蕉综合69| 91免费观看视频在线| 国产一区91| 香蕉久久精品| 美脚恋feet久草欧美| 日韩欧美亚洲系列| 午夜视频在线瓜伦| 日本在线观看一区二区| 国产精品欧美激情| 久久精品国产成人精品| 制服丝袜中文字幕亚洲| 亚洲最新在线观看| 91玉足脚交白嫩脚丫在线播放| 国产日产高清欧美一区二区三区| 亚州综合一区| 麻豆久久久久| 免费男女羞羞的视频网站在线观看| 黄页网站免费在线观看| 丁香啪啪综合成人亚洲| av动漫免费观看| 国产亚洲欧美另类一区二区三区| 欧美亚洲视频一区二区| 中文字幕日韩高清| 日韩视频在线永久播放| 欧美视频在线观看免费网址| 亚洲国产成人自拍| 国产美女主播视频一区| av不卡在线看| 香蕉国产精品| 欧美色资源站| 欧美啪啪网站| jizzjizz中国精品麻豆| a天堂中文在线88| 黄动漫在线观看| 在线观看免费播放网址成人| 精品少妇在线视频| 亚洲a∨一区二区三区| 国产久一道中文一区| 国产人妖伪娘一区91| 97国产suv精品一区二区62| 久久精品成人动漫| 亚洲天堂日韩电影| 亚洲国产日韩欧美综合久久| 欧美精品在欧美一区二区少妇| 婷婷夜色潮精品综合在线| 亚洲天堂免费看| 国产丝袜美腿一区二区三区| 波多野结衣中文一区| 国产一区二区在线免费观看| 日本在线不卡一区| 老司机免费视频久久| 中文日韩在线| 在线观看日韩av电影| 一区二区三区午夜探花| 国产亚洲一区二区三区不卡| 色天下一区二区三区| 久久1电影院| 麻豆精品少妇| 美女视频亚洲色图| 秋霞影视一区二区三区| 大香伊人久久精品一区二区| 亚洲视频三区| 国产精品三p一区二区| 成人另类视频| 欧美日日夜夜| 国产一区99| 91综合在线| 欧美黄色精品| 99精品国产99久久久久久福利| 亚洲第一黄网| 亚洲欧美春色| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美网站免费| 亚洲综合伊人| 久久视频社区| 欧美综合精品| 日本a口亚洲| 亚洲精品国产首次亮相| 欧美黄色一区| 午夜在线a亚洲v天堂网2018| 亚洲看片一区| 日韩国产成人精品| 国产毛片精品一区| 91麻豆国产精品久久| 国产精品久久夜| 一区二区三区四区激情| 偷拍亚洲欧洲综合| 欧美日韩国产综合一区二区三区 | 日韩福利电影在线观看| 日本v片在线高清不卡在线观看| 玖玖视频精品| 国产一区二区女| 不卡高清视频专区| 日本一区二区久久| 亚洲精品成人悠悠色影视| 精品动漫一区二区| 欧美图片一区二区三区| 精品久久久久久综合日本欧美| 亚洲女人天堂av| 欧美黑人国产人伦爽爽爽| 国产成人一区二| 97在线电影| 一区一区视频| 99热成人精品热久久66| 成年人黄视频网站| 日本大臀精品| 麻豆av在线免费观看| 成人国产一区| 一本色道久久综合亚洲精品酒店| 欧美 日韩 国产一区二区在线视频 | 男人添女人下面免费视频| av二区三区| avav免费在线观看| 色资源二区在线视频| 免费一级欧美在线大片| 欧美日韩一区二区三区视频播放| 激情另类综合| 国产经典欧美精品| 国产精品毛片a∨一区二区三区| 精品国产91久久久久久老师| 日韩精品一区二区三区老鸭窝| 日韩日本欧美亚洲| 国产精品影片在线观看| 亚洲国产综合自拍| 色婷婷综合网站| 日本精品一区二区三区在线播放| 欧美电影h版| 激情综合网站| 青椒成人免费视频| 中国av一区二区三区| 欧美伊人久久久久久久久影院| 亚洲网站在线播放| 国产精品成av人在线视午夜片 | 亚洲精品日韩久久久| 欧美黑人一级爽快片淫片高清| 成人久久精品视频| 精品少妇人妻av一区二区| 四虎4hu新地址入口2023| 日本高清在线观看wwwww色| 免费成人高清在线视频| 国产精品黑丝在线播放| 久久成人久久鬼色| 一区二区三区中文免费| 精品国免费一区二区三区| 久久久久久久国产| 久久精品国产99精品国产亚洲性色| 日韩欧美一区二| 国产专区在线| 成人乱码手机视频| 激情综合激情| 久久久精品免费免费| 欧美人牲a欧美精品| 欧美精品www在线观看| 国产自产在线视频一区| 国产成人综合一区| 九色porny在线| 日本中文字幕在线一区| 美女视频免费一区| 亚洲影视在线播放| 亚洲色图校园春色| 91国产在线播放| 欧美三级午夜理伦三级| 国产美女av在线| 你懂的一区二区三区| 国产一区二区导航在线播放| 欧美性极品xxxx做受| 欧美日韩国产成人在线观看| 日本成人看片网址| 在线资源av| 午夜久久av| 国产一区美女在线| 欧美在线三级电影|