java switch case 詳細講解

switch 語句的格式:

switch ( 整型或字符型變量 )

{

case 變量可能值1 :

分支一;

break;

case 變量可能值2 :

分支二;

break;

case 變量可能值3 :

分支三;

break;

...

default :

最后分支;

在 switch 的語法里营曼,我們要學到4個關鍵字:switch祈纯、case 、break溢陪、default该肴。

在 switch ( 變量 ) 這一行里膜蠢,變量只能是整型或字符型。程序先讀出這個變量的值届榄,然后在各個"case"里查找哪個值和這個變量相等浅乔,如果相等,就算條件成立铝条,程序執(zhí)行相應的分支靖苇,直到碰上break或者switch語句結束。

了解一下switch,case,break班缰,default的意思贤壁,對理解前面的一切也會有幫助,它們分別是:開關埠忘,情況脾拆,中斷,默認(值)莹妒。那么用一句話套起來的說法就是:根據(jù)開關值的不同名船,執(zhí)行不同的情況,直到遇上中斷旨怠;如果所有的情況都不符合開關值渠驼,那么就執(zhí)行默認的分支。

最后說一下關于switch中非常重要的幾個注意點鉴腻。

第一迷扇、switch ( 整型或字符型變量 ) 中,變量的類型如文中所標爽哎,只能是整型和字符類型谋梭。它們包含 int,char。當然無符類型或不同的長度整型(unsigned int,short,unsigned char)等都可以倦青。另外,枚舉類型(enum)內部也是由整型或字符類型實現(xiàn)盹舞。所以也可以产镐。實型(浮點型)數(shù)就不行隘庄,如:

float a = 0.123;

switch(a) //錯誤!a不是整型或字符類型變量癣亚。

{

....

}

第二丑掺、case 之后可以是直接的常量數(shù)值,如例中的1述雾、2街州、3、4玻孟,也可以是一個使用常量計算式唆缴,如2+2等,但不能是變量或帶有變量的表達式黍翎,如 a * 2等面徽。當然也不能是實型數(shù),如4.1匣掸,或2.0 / 2 等趟紊。

switch(formWay)

{

case 2-1 ://正確

...

case a-2 ://錯誤

...

case 2.0 ://錯誤

...

}

另外,在case 與常量值之后碰酝,需要一個冒號霎匈,請注意不要疏忽。

第三送爸、break 的作用铛嘱。

break 使得程序在執(zhí)行完選中的分支后,可以跳出整個switch語句(即跳到switch接的一對{}之后)碱璃,完成switch弄痹。如果沒有這個break,程序將在繼續(xù)前進到下一分支,直到遇到后面的break或者switch完成嵌器。

比如肛真,假設現(xiàn)在程序進入case 1: 中的分支,但case 1 的分支這回沒有加break:

case 1 :

System.out.println("您是通過搜索引擎來到本網(wǎng)站的爽航。");

case 2 :

System.out.println("您是通過朋友介紹來到本網(wǎng)站的蚓让。");

那么,程序在輸出 "您是通過搜索引擎來到本網(wǎng)站的讥珍。" 之后历极,會繼續(xù)輸出case 2中的 "您是通過朋友介紹來到本網(wǎng)站的。" 衷佃。

請大家將前面實例中的代碼片段改為如下(紅色部分趟卸,即將所有的break都通過加//使之無效。):

...

case 1 :

System.out.println("您是通過搜索引擎來到本網(wǎng)站的。" );

//break;

case 2 :

System.out.println("您是通過朋友介紹來到本網(wǎng)站的锄列。");

//break;

case 3 :

System.out.println("您是通過報刊雜志來到本網(wǎng)站的图云。");

//break;

case 4 :

System.out.println("您是通過其它方法來到本網(wǎng)站的。");

//break;

default :

System.out.println("錯誤的選擇邻邮!請輸入1~4的數(shù)字做出選擇竣况。");

...

運行后,結果會是如何筒严?請大家動手試試丹泉,然后在作業(yè)中回答我。

第四鸭蛙、default是可選中摹恨,前面我們已經(jīng)說過它的用處,及如果沒有default规惰,程序在找不到匹配的case分支后睬塌,將在switch語句范圍內不做什么事,直接完成switch歇万。大家也可以在實例中將default的代碼注釋掉揩晴,然后試運行,并且在選擇時輸入5贪磺。

...

//default :

//cout << "錯誤的選擇硫兰!請輸入1~4的數(shù)字做出選擇。" << endl;

...

第五寒锚、必要時劫映,可在各個case中使用{}來明確產生獨立的復合語句。

前面我們在講if...語句和其它流程控制語句時刹前,都使用{}來產生復合語句:

if (條件)

{

分支一;

}

除非在分支中的語句正好只有一句泳赋,這里可以不需要花括號{}。但在switch的各個case語句里喇喉,我們在語法格式上就沒有標出要使用{}祖今,請看:

switch ( 整型或字符型變量 )

{

case 變量可能值1 :

分支一;

break;

case 變量可能值2 :

....

}

一般教科書上只是說 case 分支可以不使用{},但這里我想提醒大家拣技,并不是任何情況下case分支都可以不加{}千诬,比如你想在某個case里定義一個變量:

switch (formWay)

{

case 1 :

int a=2;//錯誤。由于case不明確的范圍膏斤,編譯器無法在此處定義一個變量徐绑。

...

case 2 :

...

}

在這種情況下,加上{}可以解決問題莫辨。

switch (formWay)

{

case 1 :

int a=2;//正確傲茄,變量a被明確限定在當前{}范圍內毅访。

...

case 2 :

...

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市烫幕,隨后出現(xiàn)的幾起案子俺抽,更是在濱河造成了極大的恐慌,老刑警劉巖较曼,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異振愿,居然都是意外死亡捷犹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門冕末,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萍歉,“玉大人,你說我怎么就攤上這事档桃∏购ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵藻肄,是天一觀的道長蔑舞。 經(jīng)常有香客問我,道長嘹屯,這世上最難降的妖魔是什么攻询? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮州弟,結果婚禮上钧栖,老公的妹妹穿的比我還像新娘。我一直安慰自己婆翔,他們只是感情好拯杠,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著啃奴,像睡著了一般潭陪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纺腊,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天畔咧,我揣著相機與錄音,去河邊找鬼揖膜。 笑死誓沸,一個胖子當著我的面吹牛,可吹牛的內容都是我干的壹粟。 我是一名探鬼主播拜隧,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宿百,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了洪添?” 一聲冷哼從身側響起垦页,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎干奢,沒想到半個月后痊焊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡忿峻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年薄啥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逛尚。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡垄惧,死狀恐怖,靈堂內的尸體忽然破棺而出绰寞,到底是詐尸還是另有隱情到逊,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布滤钱,位于F島的核電站觉壶,受9級特大地震影響,放射性物質發(fā)生泄漏菩暗。R本人自食惡果不足惜掰曾,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望停团。 院中可真熱鬧旷坦,春花似錦、人聲如沸佑稠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舌胶。三九已至捆蜀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間幔嫂,已是汗流浹背辆它。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留履恩,地道東北人锰茉。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像切心,于是被迫代替她去往敵國和親飒筑。 傳聞我的和親對象是個殘疾皇子片吊,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容