switch多選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)示例詳解
switch多選擇結(jié)構(gòu)
多選擇結(jié)構(gòu)還有一個(gè)實(shí)現(xiàn)方式就是switch case語句
switch case語句判斷一個(gè)變量與一系列值中某個(gè)值是否相等,每個(gè)值稱為一個(gè)分支。
switch語句中的變量類型可以是:
switch(expression){ ? ?case value: ? ? ? ?//語句 ? ? ? ?break;//可選 ? ?case value: ? ? ? ?//語句 ? ? ? ?break;//可選 ? ?//你可以有任意數(shù)量的case語句 ? ?default://可選 ? ? ? ?//語句 }
byte、short、int或者char
從Java SE 7開始
switch 支持字符串 String 類型了
同時(shí)case標(biāo)簽必須為字符串常量或字面量
public static void main(String[] args) { ? ? ? ?//case穿透 //switch 匹配一個(gè)具體的值 ? ? ? ?char grade = 'B'; ? ? ? ? ?switch (grade){ ? ? ? ? ? ?case 'A': ? ? ? ? ? ? ? ?System.out.println("優(yōu)秀"); ? ? ? ? ? ? ? ?break;//可選 ? ? ? ? ? ?case 'B': ? ? ? ? ? ? ? ?System.out.println("良好"); ? ? ? ? ? ? ? ?break;//可選 ? ? ? ? ? ?case 'C': ? ? ? ? ? ? ? ?System.out.println("及格"); ? ? ? ? ? ? ? ?break;//可選 ? ? ? ? ? ?case 'D': ? ? ? ? ? ? ? ?System.out.println("再接再厲"); ? ? ? ? ? ? ? ?break;//可選 ? ? ? ? ? ?case 'E': ? ? ? ? ? ? ? ?System.out.println("掛科"); ? ? ? ? ? ? ? ?break;//可選 ? ? ? ? ? ?default: ? ? ? ? ? ? ? ?System.out.println("未知等級(jí)"); ? ? ? } ? } ? //輸出結(jié)果 良好
public static void main(String[] args) { ? ? ? ?String name = "曹炎兵"; ? ? ? ?//JDK7的新特性,表達(dá)式結(jié)果可以是字符串?。?! ? ? ? ?//字符的本質(zhì)還是數(shù)字 ? ? ? ? ?switch (name){ ? ? ? ? ? ?case "曹炎兵": ? ? ? ? ? ? ? ?System.out.println("這條街我說了算!"); ? ? ? ? ? ? ? ?break; ? ? ? ? ? ?case "曹玄亮": ? ? ? ? ? ? ? ?System.out.println("下輩子你當(dāng)哥哥,我當(dāng)?shù)艿埽?); ? ? ? ? ? ? ? ?break; ? ? ? ? ? ?default: ? ? ? ? ? ? ? ?System.out.println("你找錯(cuò)人了!"); ? ? ? } ? }
循環(huán)結(jié)構(gòu)
while循環(huán)
do...while循環(huán)
for循環(huán)
在Java5中引入了一種主要用于數(shù)組的增強(qiáng)型for循環(huán)
while循環(huán)
while是最基本的循環(huán),它的結(jié)構(gòu)為:
while(布爾表達(dá)式) { ? ?//循環(huán)內(nèi)容 }
只要布爾表達(dá)式為true,循環(huán)就會(huì)一直執(zhí)行下去。
我們大多數(shù)情況是會(huì)讓循環(huán)停止下來的,我們需要一個(gè)讓表達(dá)式失效的方式來結(jié)束循環(huán)。
少部分情況需要循環(huán)一直執(zhí)行,比如服務(wù)器的請(qǐng)求響應(yīng)監(jiān)聽等。
循環(huán)條件一直為true就會(huì)造成無限循環(huán)【死循環(huán)】,我們正常的業(yè)務(wù)編程中應(yīng)該盡量避免死循環(huán)。會(huì)影響程序性能或者造成程序卡死崩潰!
思考:計(jì)算1+2+3+...+10=?
public static void main(String[] args) { ? ? ? ? ? ? ? ?//輸出1~100 ? ? ? ?int i = 0; ? ? ? ? ? ? ? ?while (i < 100) { ? ? ? ? ? ?i++; ? ? ? ? ? ?System.out.println(i); ? ? ? } ? }
public static void main(String[] args) { ? ? ? ?//死循環(huán) ? ? ? ?while (true){ ? ? ? ? ? ?//等待客戶端連接 ? ? ? ? ? ?//定時(shí)檢查 ? ? ? ? ? ?//... ? ? ? } ? }
public static void main(String[] args) { ? ? ? ?//計(jì)算1+2+3+...+100=? ? ? ? ? ?//高斯的故事 ? ? ? ?int i = 0; ? ? ? ?int sum = 0; ? ? ? ? ?while (i <= 100) { ? ? ? ? ? ?sum = sum + i; ? ? ? ? ? ?i++; ? ? ? } ? ? ? ?System.out.println(sum); ? } ? //輸出結(jié)果 5050
do...while循環(huán)
對(duì)于while語句而言,如果不滿足條件,則不能進(jìn)入循環(huán)。但有時(shí)候我們需要即使不滿足條件,也至少執(zhí)行一次。
do...while 循環(huán)和while循環(huán)相似,不同的是,do...while循環(huán)至少執(zhí)行一次。
do{ ? ?//代碼語句 }while(布爾表達(dá)式);
while和do-while的區(qū)別:
while先判斷后執(zhí)行。do-while是先執(zhí)行后判斷!
do-while總是保證循環(huán)體會(huì)被至少執(zhí)行一次!這是他們的主要差別。
public static void main(String[] args) { ? ? ? ?int i = 0; ? ? ? ?int sum = 0; ? ? ? ? ?do { ? ? ? ? ? ?sum = sum + i; ? ? ? ? ? ?i++; ? ? ? }while (i <= 100); ? ? ? ? ?System.out.println(sum); ? } ? //輸出結(jié)果 5050
public static void main(String[] args) { ? ? ? ?int a = 0; ? ? ? ?while (a < 0) { ? ? ? ? ? ?System.out.println(a); ? ? ? ? ? ?a++; ? ? ? } ? ? ? ?System.out.println("===================="); ? ? ? ?do { ? ? ? ? ? ?System.out.println(a); ? ? ? ? ? ?a++; ? ? ? }while (a < 0); ? } ? //輸出結(jié)果 ==================== 0 ? Process finished with exit code 0
每日J(rèn)ava面試題
1.static關(guān)鍵字有什么用?
static代表"靜態(tài)"的意思,可以用來修飾:
靜態(tài)內(nèi)部類(靜態(tài)內(nèi)部類可以不依賴外部類實(shí)例對(duì)象而被實(shí)例化,而內(nèi)部類需要在外部類實(shí)例化后才能被實(shí)例化)
靜態(tài)方法(靜態(tài)方法屬于類方法,不需要實(shí)例化對(duì)象就可以調(diào)用)
靜態(tài)變量(靜態(tài)變量屬于類,不需要實(shí)例化對(duì)象就能調(diào)用)
靜態(tài)代碼塊(靜態(tài)代碼塊只會(huì)在類被加載時(shí)執(zhí)行且執(zhí)行一次)
使用示例代碼如下:
public class Test1 { ? ? ?static { ? ? ? ?System.out.println("靜態(tài)代碼塊"); ? } ? ? ? ?static class Test2 { ? ? ? ? ? } ? ? ? ?private static int id = 0; ? ? ? ?public static void staticMethod() { ? ? ? ? ? } }
2.static變量和普通變量的區(qū)別?
所屬目標(biāo)不同
靜態(tài)變量屬于類的變量,普通變量屬于對(duì)象的變量。
存儲(chǔ)區(qū)域不同
靜態(tài)變量存儲(chǔ)在方法區(qū)的靜態(tài)區(qū),普通變量存儲(chǔ)在堆區(qū)。
另外:JDK7及以上,靜態(tài)變量存儲(chǔ)在其對(duì)應(yīng)的Class對(duì)象中,而Class對(duì)象和其他普通對(duì)象一樣,都存儲(chǔ)在堆中的。
加載時(shí)間不同
靜態(tài)變量是隨著類的加載而加載,隨著類的消失而消失。
普通變量隨著對(duì)象的加載而加載,隨著對(duì)象的消失而消失
調(diào)用方式不同
靜態(tài)變量只能通過類名、對(duì)象調(diào)用,普通變量只能通過對(duì)象調(diào)用。
3.Java中final、finally、finalize的區(qū)別與用法
final
final是一個(gè)修飾符也是一個(gè)關(guān)鍵字
被final修飾的類無法被繼承
對(duì)于一個(gè)final變量,如果是基本數(shù)據(jù)類型的變量,則其數(shù)值一旦在初始化之后便不能更改;
如果是引用類型的變量,則在對(duì)其初始化之后便不能再讓其指向另一個(gè)對(duì)象。但是它指向的對(duì)象的內(nèi)容是可變的。
被final修飾的方法將無法被重寫,但允許重載
注意:類的private方法會(huì)隱式地被指定為final方法。
finally
finally是一個(gè)關(guān)鍵字
finally在異常處理時(shí)提供finally塊來執(zhí)行任何清除操作。不管有沒有異常被拋出或者捕獲,finally塊都會(huì)執(zhí)行,通常用于釋放資源。
finally塊正常情況下一定會(huì)被執(zhí)行。但是有至少兩個(gè)極端情況:
如果對(duì)應(yīng)的try塊沒有執(zhí)行,則這個(gè)try塊的finally快并不會(huì)被執(zhí)行
如果在try塊中jvm關(guān)機(jī),例如system.exit(n),則finally塊也不會(huì)執(zhí)行(都拔電源了,怎么執(zhí)行)
finally塊中如果有return語句,則會(huì)覆蓋try或者catch中的return語句,導(dǎo)致二者無法return,所以強(qiáng)烈建議finally塊中不要存在return關(guān)鍵字。
finalize
finalize()是Object類的protected方法,子類可以覆蓋該方法以實(shí)現(xiàn)資源清理工作。
GC在回收對(duì)象之前都會(huì)調(diào)用該方法
finalize()方法是存在很多問題的:
Java語言規(guī)范并保證finalize方法會(huì)被及時(shí)地執(zhí)行,更根本不會(huì)保證它們一定會(huì)執(zhí)行
finalize()方法可能帶來性能問題,因?yàn)镴VM通常在單獨(dú)的低優(yōu)先級(jí)線程中完成finalize的執(zhí)行
finalize()方法中,可將待回收對(duì)象賦值給GC Roots可達(dá)的對(duì)象引用,從而達(dá)到對(duì)象再生的目的
finalize方法最多由GC執(zhí)行一次(但可以手動(dòng)調(diào)用對(duì)象的finalize方法)
到此這篇關(guān)于switch多選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)switch多選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Swift并發(fā)系統(tǒng)并行運(yùn)行多個(gè)任務(wù)使用詳解
這篇文章主要為大家介紹了Swift并發(fā)系統(tǒng)并行運(yùn)行多個(gè)任務(wù)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06Swift?Sequence?Collection使用示例學(xué)習(xí)
這篇文章主要為大家介紹了Swift?Sequence?Collection使用示例學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07