switch case和循環(huán)結(jié)構(gòu)
1. switch case
1.1 結(jié)構(gòu)概述
? ? 這里使用的switch - case結(jié)構(gòu)是一個可以在很多開發(fā)語言中通用使用的
今天上課演示使用的數(shù)據(jù)類型是int類型,并且要求在沒有講述其他可以使用類型之前
只能使用int
執(zhí)行流程:
? ? 代碼運行到switch case結(jié)構(gòu)
? ? 首先取出switch之后小括號中變量保存的數(shù)據(jù)
? ? 匹配switch 大括號以內(nèi)的case選擇,找到對應(yīng)的常量選擇匹配。
? ? ? ? 如果找到了對應(yīng)的匹配選擇,執(zhí)行對應(yīng)的處理方式。
? ? ? ? 如果沒有找到匹配選擇,執(zhí)行default里面的處理方式。
? ? 這里【break】關(guān)鍵字用于結(jié)束switch case運行
1.2 switch - case使用注意事項
1. 在switch - case結(jié)構(gòu)中,有且只能執(zhí)行case,或者default之后的語句。如果存在在case 和default之外的語句,是無法執(zhí)行的,對于Java而言是無效代碼。
? ? unreachable code
?
2. 在switch - case結(jié)構(gòu)中,如果存在case或者default選擇缺少break操作。代碼會繼續(xù)運行到下一個break,或者大括號 }(switch case結(jié)尾大括號) 終止switch - case?。?/p>
?
3. 在switch - case結(jié)構(gòu)中,不允許出現(xiàn)相同的case選項,代碼無法進行操作選擇,因為所有case選擇是平級的
?
4. 在switch - case結(jié)構(gòu)中,default可以省略,代碼編譯不會受到影響,沒有語法錯誤。但是失去switch case自帶的一種異常情況處理方式。
? ? AJCG阿里巴巴Java開發(fā)規(guī)范中,是不推薦省略default
1.3 總結(jié)
1. switch case結(jié)構(gòu)和if else if 結(jié)構(gòu)類似,兩者是可以互通
2. if else if結(jié)構(gòu)中可以處理范圍性數(shù)據(jù),處理的數(shù)據(jù)區(qū)間更加廣泛
3. switch case處理數(shù)據(jù)明確性更強,處理針對性選擇比較合適
2. 循環(huán)結(jié)構(gòu)
2.1 為什么要用循環(huán)
生活中很多重復(fù)的事情,周而復(fù)始
? ? 吃飯,睡覺,擼貓,學(xué)習(xí),上課....
?
代碼中一定存在需要循環(huán)出現(xiàn)的情況,如果不使用循環(huán),會導(dǎo)致以下一些問題
? ? 1. 閱讀性極差?。?!
? ? 2. 維護性極差?。?!
? ? 3. 代碼冗余!?。?/p>
2.2 while循環(huán)
執(zhí)行流程:
? ? 當(dāng)前程序運行到while循環(huán)結(jié)構(gòu)時,首先判斷while之后的小括號里面的循環(huán)條件是否為true,如果為true,執(zhí)行循環(huán)體,在回到循環(huán)條件判斷,直到循環(huán)條件為false,終止循環(huán)?。?!
*
2.3 do - while循環(huán)
執(zhí)行流程:
? ? 當(dāng)程序執(zhí)行到do - while循環(huán)結(jié)構(gòu)時,首先執(zhí)行一次循環(huán)體(循環(huán)條件變更),再來判斷while中循環(huán)條件判斷是否為true,如果為true,繼續(xù)執(zhí)行,如果為false,終止循環(huán)。
【注意】
? ? 1. while(condition);;;;;;;;;;;;;;;;;;;;;;;;;;; 這里英文分號
? ? 2. 執(zhí)行do - while需要明確第一次循環(huán)會不會存在隱患
總結(jié)
1. 循環(huán)過程中最核心的內(nèi)容就是循環(huán)變量,需要對于循環(huán)變量的執(zhí)行的過程中數(shù)值變量完全掌握?。?!如果無法明確循環(huán)的次數(shù),循環(huán)變量的值,循環(huán)的過程,可以將循環(huán)代碼中變量的變更過程記錄。
?
2. 循環(huán)過程中需要注意無限循環(huán)問題,控制無限循環(huán)問題的出現(xiàn)。一定要保證循環(huán)條件有效性或者代碼中存在一個跳出循環(huán)的機制。
?
3. do while循環(huán)中,第一次循環(huán)體的執(zhí)行是沒有經(jīng)過任何的條件判斷的,需要注意!
【已知,可控】
?
4. while和do while循環(huán)結(jié)構(gòu)是可以進行互換的。
?
5. 然后在while和do while之間考慮使用的情況下,一般推薦使用while循環(huán)。但是不代表do while沒有實際的使用效果。