天天看點

Java——震驚大佬的《控制語句》

一、控制選擇結構

1.if語句(被稱為分支語句/條件控制語句)四種寫法

  • 第一種文法
第一種寫法:
  int a = 100;
  int b = 200;
  if(布爾表達式){
    java語句;
    java語句;
  }
  
  這裡的一個大括号{} 叫做一個分支。
  該文法的執行原理是:
    如果布爾表達式的結果是true,則執行大括
    号中的程式,否則大括号中代碼不執行。      
  • 第二種文法
第二種寫法:
  if(布爾表達式){  // 分支1
    java語句;     
  }else{            // 分支2
    java語句;
  }
  
  執行原理:如果布爾表達式的結果是true,則執行分支1,分支2不執行。
       如果布爾表達式的結果是false,分支1不執行,執行分支2.
       以上的這個語句可以保證一定會有一個分支執行。
       else表示其它。      
  • 第三種文法
第三種寫法:
  if(布爾表達式1){ // 分支1
    java語句;
  }else if(布爾表達式2){ // 分支2
    java語句;
  }else if(布爾表達式3){
    java語句;
  }else if(布爾表達式4){
    java語句;
  }....
  
  以上if語句的執行原理:
    先判斷“布爾表達式1”,如果“布爾表達式1”為true,則執行分支1,然後if語句結束了。
    當“布爾表達式1”結果是false,那麼會繼續判斷布爾表達式2的結果,
    如果布爾表達式2的結果是true,則執行分支2,然後整個if就結束了。
    
    從上往下依次判斷,主要看第一個true發生在哪個分支上。
    第一個true對應的分支執行,隻要一個分支執行,整個if結束。      
  • 第四種文法
第四種寫法:
  if(布爾表達式1){ // 分支1
    java語句;
  }else if(布爾表達式2){ // 分支2
    java語句;
  }else if(布爾表達式3){
    java語句;
  }else if(布爾表達式4){
    java語句;
  }else{
    java語句; // 以上條件沒有一個成立的。這個else就執行了。
  }      
  • 對于if語句來說,在任何情況下隻能有1個分支執行,不可能 存在2個或者更多個分支執行。if語句中隻要有1個分支執行了, 整個if語句就結束了。(對于1個完整的if語句來說的。)
  • 以上4種文法機制中,凡是帶有else分支的,一定可以保證會有 一個分支執行。以上4種當中,第一種和第三種沒有else分支,這樣的語句可能會導緻最後一個分支都不執行。第二種和第四種肯定會有 1個分支執行。
  • 當分支當中“java語句;”隻有1條,那麼大括号{}可以省略,但為了 可讀性,最好不要省略。(有的程式員在編寫代碼的時候,可能會故意 将大括号{}省略,你能看懂就行。)

2.switch語句

switch(值){
  case 值1:
    java語句;
    java語句;...
    break;
  case 值2:
    java語句;
    java語句;...
    break;
  case 值3:
    java語句;
    java語句;...
    break;
  default:
    java語句;
  }      
  • 執行原理
  • switch後面小括号中的“資料”和case後中的“資料”一一進行比對,比對成功的分支執行
  • 所有分支都不比對,如果有default語句的話,執行它的分支的語句
  • case穿透
  • 比對成功的分支執行,分支中有“break”語句的話,switch語句終止
  • 如果沒有“break”語句的話,直接進入下一分支執行(不比對),稱為case穿透現象
  • case可以合并
switch (score) {
            case 10:
            case 9:
                ans = "優";
                break;
            case 8:
                ans = "良";
                //break;
            case 7:
                ans = "中";
                break;
            case 6:
                ans = "及格";
                break;
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
            case 0:
                ans = "不及格";
                break;
            default:
                ans = "輸入的成績有誤";
        }
//case10、case9 和 case 5、case 4、 case 3、case 2、 case 1、case 0都是屬于case合并
//比如進入case8由于case8沒有break會case穿透到case7才結束      

二、循環結構

1.for語句

  • 文法結構
for(初始化表達式; 布爾表達式; 更新表達式){
    循環體; // 循環體由java語句構成
    java語句;
    java語句;
    java語句;
    java語句;
    ....
  }      
  • 執行原理
  • 先執行初始化表達式,并且初始化表達式隻執行1次。然後判斷布爾表達式的結果,如果布爾表達式結果為true,則執行循環體。循環體結束之後,執行更新表達式。更新完之後,再判斷布爾表達式的結果,如果還是true,繼續執行循環體。直到更新表達式執行結束之後,再次判斷條件時,條件為false,for循環終止。
  • 初始,布爾,更新表達式都不是必須的,不寫為死循環,但是分号必須寫

2.while循環

  • 文法
while(布爾表達式){
    循環體;
  }      
  • 執行原理
  • 判斷布爾表達式的結果,如果為true就執行循環體,循環體結束之後,再次判斷布爾表達式的結果,如果還是true,繼續執行循環體,直到布爾表達式結果為false,while循環結束。
  • for與while互相轉換
for(初始化表達式; 布爾表達式; 更新表達式){
    循環體;
  }
  
  初始化表達式;
  while(布爾表達式){
    循環體;
    更新表達式;
  }      
  • 循環次數
  • 0到N次

3.do while循環

  • 文法
do {
    循環體;
  }while(布爾表達式);//注意do while語句最後是以分号結尾      
  • 執行原理
  • 先執行循環體當中的代碼,執行一次循環體之後,判斷布爾表達式的結果,如果為true,則繼續執行循環體,如果為false循環結束。
  • 執行次數
  • 1到N次

三、控制循環結構

1.break(中斷/折斷)表示循環結束了

  • switch語句當中,用來終止switch語句的執行。 用在switch語句當中,防止case穿透現象,用來終止switch。
  • 用在for,while,do while,循環語句中用來跳出循環,終止循環的執行
public class YootkDemo {

public static void main(String args[]) {

for (int num = 1 ; num < 10 ; num ++) {

if (num == 3) { // 設定一個分支結構

System.out.println("我心目中的女神出現了,并且主動的坐在了我吃飯的餐桌對面,我放下大餅!") ;

break ; // 結束整個循環

}

System.out.println("開始吃第“" + num + "”張大餅,吃的滿口流油!") ;

}

}

}

程式執行結果:

開始吃第“1”張大餅,吃的滿口流油!

開始吃第“2”張大餅,吃的滿口流油!

我心目中的女神出現了,并且主動的坐在了我吃飯的餐桌對面,我放下大餅!      

2.continue(繼續/下一個)

  • 用在循環語句中!表示終止目前"本次"循環,直接進入下一次循環繼續執行
public class YootkDemo {

public static void main(String args[]) {

for (int num = 1 ; num < 10 ; num ++) {

if (num == 3) { // 設定一個分支結構

System.out.println("我心目中的女神出現了,并且主動的坐在了我吃飯的餐桌對面,我放下大餅!") ;

continue ; // 結束一次吃餅動作

}

System.out.println("開始吃第“" + num + "”張大餅,吃的滿口流油!") ;

}

}

}

程式執行結果:

開始吃第“1”張大餅,吃的滿口流油!

開始吃第“2”張大餅,吃的滿口流油!

我心目中的女神出現了,并且主動的坐在了我吃飯的餐桌對面,我放下大餅!

開始吃第“4”張大餅,吃的滿口流油!

開始吃第“5”張大餅,吃的滿口流油!

開始吃第“6”張大餅,吃的滿口流油!

開始吃第“7”張大餅,吃的滿口流油!

開始吃第“8”張大餅,吃的滿口流油!

開始吃第“9”張大餅,吃的滿口流油!