大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java教程
Java標(biāo)識符與關(guān)鍵字
Java變量
Java數(shù)據(jù)類型
Java運算符
Java控制語句
Java方法

Java switch選擇語句

switch語句和if語句一樣,都屬于選擇語句(分支語句),不再贅述,我們直接來看一下一個比較完整的switch語句結(jié)構(gòu)是怎樣的,請看下圖:

switch語句完整結(jié)構(gòu)

圖6-8:switch語句完整結(jié)構(gòu)

switch運行原理是怎樣的呢,請看下圖:

switch語句運行原理圖

圖6-9:switch語句運行原理圖

switch運行原理文字性描述是這樣的(以上圖為例):拿著c和表達式1進行比較,如果相等,則執(zhí)行語句1,如果不相等,繼續(xù)拿著c和表達式2進行比較,如果相等,則執(zhí)行語句2,如果不相等,繼續(xù)...,如果c和所有的分支表達式都不相等,此時default分支“語句n+1”則執(zhí)行。

以上描述是switch語句的一般性執(zhí)行流程,實際上在執(zhí)行過程中還有很多因素的影響,接下來我將列出使用switch語句的一些注意事項:

● switch語句后面的小括號“()”當(dāng)中都可以出現(xiàn)什么,在JDK1.6之前(包括1.6在內(nèi))switch只能探測int類型的數(shù)據(jù),但是在JDK1.7之后(包括1.7在內(nèi)),switch語句除了支持int類型之外,還支持String類型。也就是說從Java7開始switch后面小括號中可以出現(xiàn)字符串。

● switch雖然只能探測int類型,但是也可以將byte,short,char類型放到小括號當(dāng)中,因為這些類型會自動轉(zhuǎn)換成int類型(小容量向大容量轉(zhuǎn)換稱為自動類型轉(zhuǎn)換)。

● switch語句當(dāng)中case是可以進行合并的,例如以下代碼:

switch(90){
case 100 : case 90 : case 80 : case 70 : 
	System.out.println("過關(guān)了");
	break;
case 60:
	System.out.println("失敗了");
	break;
default : 
	System.out.println("出錯了");
}

● switch語句當(dāng)中當(dāng)某個分支匹配成功,則開始執(zhí)行此分支當(dāng)中的java語句,當(dāng)遇到當(dāng)前分支中的“break;”語句,switch語句就結(jié)束了,但是如果當(dāng)前分支中沒有“break;”語句,則會發(fā)生case穿透現(xiàn)象,也就是說下一個分支也不再進行匹配,直接進入下一個分支執(zhí)行,直到遇到“break;”為止。例如以下代碼:

char c = 'A';
switch(c){
case 'A' :
	System.out.println(1);
case 'B' :
	System.out.println(2);
	break;
default :
	System.out.println(3);
}

執(zhí)行結(jié)果如下所示:

switch的case穿透測試

圖6-10:switch的case穿透測試

接下來我們來看幾個switch的經(jīng)典案例,請看代碼:

示例代碼1:從鍵盤接收一個數(shù)字[1-7],當(dāng)數(shù)字是1~5的時候,控制臺輸出工作日,當(dāng)數(shù)字是6~7的時候,控制臺輸出休息日,其他數(shù)字提示錯誤信息。

java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.print("請輸入[1-7]的整數(shù)數(shù)字:");
int dayOfWeek = scan.nextInt();
switch(dayOfWeek){
case 1: case 2: case 3: case 4: case 5:
	System.out.println("今天是工作日哦!");
	break;
case 6:case 7:
	System.out.println("今天是休息日哦!");
	break;
default :
	System.out.println("對不起,您的輸入有誤");
}

示例代碼2:業(yè)務(wù)背景:鍵盤接收一個學(xué)生的成績(假設(shè)成績是合法的),范圍在[0-100],根據(jù)成績判斷等級,[90-100]等級為“優(yōu)秀”,[80-90)等級為“良好”,[70-80)等級為“中等”,[60-70)等級為“及格”,[0-60)等級為“大笨蛋”。只允許使用switch,不允許使用if語句。

java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.print("請輸入考試成績[0-100]:");
double score = scan.nextDouble();
String grade = "大笨蛋";
switch((int)(score / 10)){
case 10: case 9:
	grade = "優(yōu)秀";
	break;
case 8:
	grade = "良好";
	break;
case 7:
	grade = "中等";
	break;
case 6:
	grade = "及格";
	break;
}
System.out.println("成績等級為:" + grade);

運行結(jié)果如下圖所示:

圖6-11:switch判斷成績等級

圖6-12:switch判斷成績等級

以上程序在編寫時候的核心技巧是:[90-100]分的所有數(shù)字,包括浮點型數(shù)字,讓其除以10之后強轉(zhuǎn)為int類型,結(jié)果一定是9或者10。[80-90)分的所有數(shù)字,除以10之后取整,結(jié)果一定是8,以此類推。沒關(guān)系同學(xué)們,大家在起初學(xué)習(xí)的時候不一定會馬上寫出來以上程序,這個過程是需要積累的,下去之后先自己模仿我的程序,慢慢的你就會寫了。

if和switch都是條件判斷語句(分支語句/選擇語句),在效果上是沒有什么差別的。而不同,我們可以從效率上來看一看,舉一個很簡單的例子: if(a > b) { a = b;} else { b = a; } 如果將這個例子放在switch語句中,也并不是不能實現(xiàn),但是實現(xiàn)起來可能會比較麻煩一些,因為在switch語句中case要求的是常量,一般是不能進行邏輯判斷的,所以這也是if語句優(yōu)于switch語句的地方。但是如果您判斷的都是幾個常量的數(shù)據(jù),我建議您最好采用switch語句,雖然if語句也是能實現(xiàn)的,但是性能就比switch差的有點遠了。

主站蜘蛛池模板: 欧美成人区 | 日韩精品福利 | 亚洲香蕉国产高清在线播放 | 91亚洲在线 | 四虎影视www | 成人性色生活片免费看爆迷你毛片 | 综合色伊人 | 久久免费福利视频 | 久久r这里只有精品 | 5060网永久免费一级毛片 | 九九色| 亚洲欧美第一 | 国产最新精品精品视频 | 天堂一区二区三区在线观看 | www.青草视频| 欧美日本俄罗斯一级毛片 | 一级特级女人18毛片免费视频 | 2022久久国产精品免费热麻豆 | 婷婷在线成人免费观看搜索 | 久久99热这里只有精品免费看 | 欧美va亚洲va国产综合 | 午夜深夜福利网址 | 99久久99久久精品免费看蜜桃 | 欧美国产一区二区三区 | 久久国产香蕉一区精品 | 97福利在线 | 久草在线视频看看 | 中文字幕精品亚洲无线码二区 | 国内精品免费久久久久妲己 | 色网站在线播放 | 婷婷久月 | 色色色资源站 | 欧美日韩一二三 | 久热精品免费视频 | 91论坛在线| 久久亚洲一区二区 | 久久精品视频一区二区三区 | 福利视频精品 | 欧美久久视频 | 久草热线 | 日本阿v精品视频在线观看 日本爱爱免费视频 |