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

Java教程
Java標識符與關鍵字
Java變量
Java數據類型
Java運算符
Java控制語句
Java方法
Java面向對象
Java對象的創建和使用
Java封裝
Java中static和this
Java繼承
Java方法覆蓋和多態
Java super
Java基礎練習題

Java switch選擇語句

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

switch語句完整結構

圖6-8:switch語句完整結構

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

switch語句運行原理圖

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

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

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

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

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

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

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

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

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

執行結果如下所示:

switch的case穿透測試

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

接下來我們來看幾個switch的經典案例,請看代碼:

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

java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.print("請輸入[1-7]的整數數字:");
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:業務背景:鍵盤接收一個學生的成績(假設成績是合法的),范圍在[0-100],根據成績判斷等級,[90-100]等級為“優秀”,[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 = "優秀";
	break;
case 8:
	grade = "良好";
	break;
case 7:
	grade = "中等";
	break;
case 6:
	grade = "及格";
	break;
}
System.out.println("成績等級為:" + grade);

運行結果如下圖所示:

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

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

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

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

全部教程
主站蜘蛛池模板: 国产成人亚洲精品大帝 | 天啪天天久久天天综合啪 | 欧美日韩亚洲视频 | 污视频在线看网站 | 久久综合网址 | 开心久久婷婷综合中文字幕 | 亚洲女人天堂a在线播放 | 亚洲欧洲日产国码久在线观看 | 精品视频亚洲 | 欧美成人另类bbw | 久久精品国产亚洲网站 | 日本老熟妇激情毛片 | 99精品日韩| 免费一级毛毛片 | 精品动漫一区二区三区 | a级做爰视频在线观看 | 日韩免费中文字幕 | 久久精品国产亚洲婷婷 | 成人a免费α片在线视频网站 | 日韩欧美色 | 日韩欧美色视频在线观看 | 欧美三级一区二区 | 日韩网站在线 | 免费国产免费福利视频 | 国产精品成人观看视频国产奇米 | www.日本一区 | 91热久久免费频精品99欧美 | 亚洲自拍成人 | 欧美精品99久久久久久人 | 日本高中生一级乇片 | 日本在线一区二区三区 | 精品欧美一区二区三区在线 | 亚洲国产高清视频在线观看 | 一本伊人 | 精品一久久香蕉国产线看观看下 | 91手机看片国产福利精品 | dxj久久成国产精品 dxj伊人 | 国产精品成人在线 | 一区二区三区在线观看免费 | 成人看片黄a免费看视频 | 欧美日韩有码 |