1. 程式人生 > 程式設計 >Java常用流程控制語句實現原理解析

Java常用流程控制語句實現原理解析

一、判斷語句

最常用的順序結構只能順序執行,並不能進行判斷和選擇。於是便有了下面兩種分支結構

  • if語句
  • switch語句

1. if語句

一個if語句包含一個布林表示式和一條或多條語句。

1.1 判斷語句1——if

if語句的第一種格式

if(關係表示式){
  語句體;
}

執行流程

  • 首先判斷關係表示式結果是true還是false
  • 如果是true就執行語句體
  • 如果是false就不執行語句體

1.2 判斷語句2——if...else

if語句的第二種格式:if...else

if(關係表示式) {
	語句體1;
}else {
	語句體2;
}

執行流程

  • 首先判斷關係表示式結果是true還是false
  • 如果是true就執行語句體1
  • 如果是false就不執行語句體 2

1.3 判斷語句3——if...else if...else

if語句的第三種格式:if...else if...else

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就繼續判斷關係表達3,看其結果是true還是false
  • ......
  • 如果沒有任何關係表示式為true,就執行語句體n+1

注意:有多個if...else只執行一個

二、選擇語句

1. 選擇語句——switch

Switch語句格式:

switch(表示式) {
    case 常量值1:
    語句體1;
break;
    case 常量值2:
    語句體2;
break;
    ...
      default:
    語句體n+1;
    break;
}

執行流程

  • 首先計算出表示式的值
  • 其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break結束
  • 如果所有的case都和表示式的值不匹配,就會執行default語句體部分,然後程式結束

注意事項:

  • 多個case後面的數值不可以重複
  • switch後面小括號當中只能說下列資料型別:
    • 基本資料型別:bytr/short/char/int
    • 引用資料型別:String字串、eumn列舉
  • switch語句格式很靈活:
    • 前後順序可以顛倒
    • break語句可以省略

2. case的穿透性

在switch語句中,如果case的後面不寫break,將出現穿透現象。也就是不會繼續判斷下一個case的值,而是直接向後執行,直到遇到break,或者整體switch結束

由於case存在穿透性,因此我們在編寫switch語句時,必須注意要寫上break

三、迴圈結構

順序結構的程式語句只能被執行一次。如果想要同樣的操作多次執行,,就需要使用到迴圈結構。

常用的迴圈結構有三種:

  • for迴圈
  • while迴圈
  • do…while迴圈

迴圈結構由如下四部分組成:

  • 初始化語句:在迴圈最開始執行,而且執行一次
  • 條件判斷:如果成立,則迴圈繼續;否則退出迴圈
  • 迴圈體:指的是重複要做的事情,由若干行語句組成
  • 步進語句:每次迴圈之後都要進行的掃尾工作

1. for迴圈

for 迴圈語句是支援迭代的一種通用結構,利用每次迭代之後更新的計數器或類似的變數來控制迭代次數。for 迴圈語句是 while 迴圈的一種簡化形式,執行的次數在執行前就已經確定。

語法格式如下:

for(初始化; 布林表示式; 步進語句) {
  迴圈體
}

2. while迴圈

迴圈語句標準格式

while (條件判斷){
	迴圈體
}

迴圈語句擴充套件格式:

初始化表示式
  while(布林表示式){
    迴圈體
      步進語句
}

3. do…while迴圈

對於while語句而言,如果不滿足條件,則不能進入迴圈。但有時候我們需要不滿足條件,也至少執行一次。do…while迴圈和while迴圈相似,不同的是,do…while迴圈至少會執行一次。

do…while迴圈的標準格式:

do {
    迴圈體
}while(條件判斷);

do…while迴圈的擴充套件格式:

初始化語句
do{
  迴圈體
    步進語句
}while(條件判斷);

4. 三種迴圈的區別

如果條件判斷沒有滿足過,那麼for和while迴圈將會執行0次,do...while迴圈會至少執行一次

for迴圈的變數在小括號內定義,只有在迴圈內部才可以使用;while和do…while迴圈的初始化語句在外面,所以跳出迴圈後還可以繼續使用

在已知迴圈次數的時候使用推薦使用for,迴圈次數未知的時推薦使用while

5. 跳出語句

berak語句:主要用在迴圈語句或者switch語句中,用來跳出整個語句塊打斷這個迴圈。它能跳出最裡層的迴圈,並且繼續執行該迴圈下面的語句。

continue語句:適用於任何迴圈控制結構中。作用是結束本次迴圈,繼續下一次的迴圈 。

  • 在for迴圈中,continue語句使程式立即跳轉到步進語句
  • 在while或者do…while迴圈中,程式立即跳轉到布林表示式的判斷語句

6. 死迴圈

死迴圈就是迴圈的條件永遠為true,是永不結束的迴圈 。標準格式為:

while(true){
  迴圈體
}

7. 巢狀迴圈

巢狀迴圈是指一個迴圈的迴圈體是另一個迴圈。如for迴圈裡面還有一個for迴圈,這就是巢狀迴圈。總共的迴圈次數=外迴圈次數*內迴圈次數

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。