Java流程控制語句(條件語句和循環語句)


 
A:什么是流程控制語句
·流程控制語句:可以控制程序的執行流程。
B:流程控制語句的分類
 
1·順序結構

  順序結構概述: 是程序中最簡單最基本的流程控制,沒有特定的語法結構,按照代碼的先后順序,依次執行,程序中大多數的代碼都是這樣執行的。

  總的來說:寫在前面的先執行,寫在后面的后執行

2·選擇結構

  選擇結構 也被稱為分支結構。

  選擇結構有特定的語法規則,代碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,所以產生選擇,按照不同的選擇執行不同的代碼。

  Java語言提供了兩種選擇結構語句 if語句 switch語句

 

2.1  if語句有三種格式(選擇結構)

①  if語句第一種格式:

  if(關系表達式) {

    語句體

  }

執行流程: 首先判斷關系表達式看其結果是true還是false

      如果是true就執行語句體

      如果是false就不執行語句體

注意:

關系表達式無論簡單還是復雜,結果必須是boolean類型

if語句控制的語句體如果是一條語句,大括號可以省略;如果是多條語句,就不能省略。建議永遠不要省略。

一般來說:有左大括號就沒有分號,有分號就沒有左大括號  例如:

int b = 100;
if(b != 100); //這里其實是有語句體的,只不過是空語句體。

//代碼塊
{
System.out.println("b的值是100");
System.out.println("over");
}

 


 

②  if語句第二種格式:

  if(關系表達式) {

    語句體1;

  }else {

    語句體2;

  }

執行流程: 首先判斷關系表達式看其結果是true還是false

      如果是true就執行語句體1

      如果是false就執行語句體2

 

注意:else后面是沒有比較表達式的,只有if后面有。

 


 

三元運算符實現的,都可以采用if語句實現。反之不成立。

什么時候if語句實現不能用三元改進呢?
  當if語句控制的操作是一個輸出語句的時候就不能。
  為什么呢?因為三元運算符是一個運算符,運算符操作完畢就應該有一個結果,而不是一個輸出。

class IfDemo4 {
  public static void main(String[] args) {
    //獲取兩個數據的最大值
    int a = 10;
    int b = 20;

    //用if語句實現
    int max1;
    if(a > b) {
      max1 = a;
    }else {
      max1 = b;
    }
    System.out.println("max1:"+max1);

    //用三元改進
    int max2 = (a > b)? a: b;
    System.out.println("max2:"+max2);
    System.out.println("----------");

    //判斷一個數據是奇數還是偶數,並輸出是奇數還是偶數
    int x = 100;

    if(x%2 == 0) {
      System.out.println("100是一個偶數");
    }else {
      System.out.println("100是一個奇數");
    }

    //用三元改進;這種改進是錯誤的。
    //String s = (x%2 == 0)?System.out.println("100是一個偶數");:System.out.println("100是一個奇數");;
   }
 }

 


 

③  if語句第三種格式:

  if(關系表達式1) {

    語句體1;

  }else if (關系表達式2) {

    語句體2;

  } …

  else {

    語句體n+1;

  }

執行流程: 首先判斷關系表達式1看其結果是true還是false

      如果是true就執行語句體1

      如果是false就繼續判斷關系表達式2看其結果是true還是false

      如果是true就執行語句體2

      如果是false就繼續判斷關系表達式…看其結果是true還是false

       …

      如果沒有任何關系表達式為true,就執行語句體n+1。

 


 

④  嵌套 if 語句

  只有當外層 if 的條件成立時,才會判斷內層 if 的條件。

     語法:

    

   執行過程:

   

  示例代碼:

 




 

2.2  switch語句(選擇結構)

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語句體部分,然后程序結束掉。

 示例代碼:

  

 


 

不得不說的幾點小秘密:
1、 switch 后面小括號中表達式的值必須是整型或字符型
2、 case 后面的值可以是常量數值,如 1、2;也可以是一個常量表達式,如 2+2 ;但不能是變量或帶有變量的表達式,如 a * 2
3、 case 匹配后,執行匹配塊里的程序代碼,如果沒有遇見 break 會繼續執行下一個的 case 塊的內容,直到遇到 break 語句或者 switch 語句塊結束:
4、 可以把功能相同的 case 語句合並起來,如
5、 default 塊可以出現在任意位置,也可以省略
 



 

 

 

 

 

3·循環結構 

循環語句的組成
  初始化語句:
    一條或者多條語句,這些語句完成一些初始化操作。
  判斷條件語句:
    這是一個boolean 表達式,這個表達式能決定是否執行循環體。
  循環體語句:
    這個部分是循環體語句,也就是我們要多次做的事情。
  控制條件語句:
    這個部分在一次循環體結束后,下一次循環判斷條件執行前執行。通過用於控制循環條件中的變量,使得循環在合適的時候結束。

 

3.1 Java循環語句    for

for循環語句格式:
  for(初始化語句;判斷條件語句;控制條件語句) {
    循環體語句;
  }
執行流程:
  A:執行初始化語句
  B:執行判斷條件語句,看其結果是true還是false
    如果是false,循環結束。
    如果是true,繼續執行。
  C:執行循環體語句
  D:執行控制條件語句
  E:回到B繼續

注意事項:
A:判斷條件語句無論簡單還是復雜結果是boolean類型。
B:循環體語句如果是一條語句,大括號可以省略;如果是多條語句,大括號不能省略。建議永遠不要省略。
C:一般來說:有左大括號就沒有分號,有分號就沒有左大括號

 

需要留心的幾個小細節:

1、  for 關鍵字后面括號中的三個表達式必須用 “;” 隔開,三個表達式都可以省略,但 “;” 不能省略。
    a. 省略 “初始化語句”,可以在 for 語句之前由賦值語句進行變量初始化操作,如:
  
    b. 省略 “判斷條件語句”,可能會造成循環將一直執行下去,也就是我們常說的“死循環”現象,如:
  
        在編程過程中要避免“死循環”的出現,因此,對於上面的代碼可以在循環體中使用 break 強制跳出循環(關於 break 的用法會在后面介紹)。
    c. 省略 “控制條件語句”,可以在循環體中進行循環變量的變化,如:
  
2、  for 循環變量初始化和循環變量變化部分,可以是使用 “,” 同時初始化或改變多個循環變量的值,如:
  
    代碼中,初始化變量部分同時對兩個變量 i 和 j 賦值,循環變量變化部分也同時對兩個變量進行變化,運行結果:
  
3、  循環條件部分可以使用邏輯運算符組合的表達式,表示復雜判斷條件,但一定注意運算的優先級,如:
  
    代碼中,必須同時滿足變量 i 小於 10 ,並且 i 不等於 5 時才會進行循環,輸出變量 i 的值。 (運算結果:1.2.3.4)到5截止
 

 

3.2 Java循環語句    while

while循環語句格式:
  基本格式
    while(判斷條件語句) {
      循環體語句;
    }
  擴展格式
    初始化語句;
    while(判斷條件語句) {
      循環體語句;
      控制條件語句;
     }

無限循環:   

  while(true){  } 

執行流程:

 

 

補充:for循環語句和while循環語句可以等價轉換,但還是有些小區別的

使用區別:

  控制條件語句所控制的那個變量,在for循環結束后,就不能再被訪問到了,而while循環結束還可以繼續使用,如果你想繼續使用,就用while,否則推薦使用for。

原因是for循環結束,該變量就從內存中消失,能夠提高內存的使用效率。

場景區別:
  for循環適合針對一個范圍判斷進行操作
  while循環適合判斷次數不明確操作

 


 

3.3 Java循環語句    do...while
 
do…while循環語句格式:

  基本格式
    do {
      循環體語句;
    }while((判斷條件語句);
  擴展格式
    初始化語句;
    do {
      循環體語句;
      控制條件語句;
    } while((判斷條件語句);

 執行流程:

1,先執行一遍循環體語句和控制條件語句,然后執行 判斷條件語句 判斷循環條件是否成立
2,如果條件成立,繼續執行1、2步驟,直到循環條件不成立為止。

特點: 先執行,后判斷

 


 

 三種循環的區別:

1> do...while循環至少執行一次循環體;而 for , while循環必須先判斷條件是否成立,然后決定是否執行循環體語句。

 2> 優先考慮for,其次考慮while,最后考慮do...while

 3> do...while循環以  ;  做結束,其它的循環以  { }  做結束。

 
死循環的注意事項: 
1> 缺失控制條件語句 會造成死循環
2> 兩種最簡單的死循環格式

  while(true){...}
  for(; ;){...}

 

循環嵌套循環語句的循環體本身 是一個循環語句。

 




 

Java循環跳轉語句    break

生活中,我們經常會因為某些原因中斷既定的任務安排。在 Java 中,我們可以使用 break 語句退出指定的循環,直接執行循環后面的代碼。
例如,使用循環輸出 1--10的數值,其中,如果數值大於 2 ,並且為 3 的倍數則停止輸出。示例代碼:
 
運行結果:1 2 結束啦
 
 

Java循環跳轉語句    continue

continue 的作用是跳過循環體中剩余的語句執行下一次循環。

例如,打印 1--10 之間所有的偶數,示例代碼:

   

運行結果:2.4.6.8.10




 

擴展:

return和break以及continue的區別

return是結束方法
break是跳出循環
continue是終止本次循環繼續下次循環

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM