java 學習筆記(入門篇)_多選擇結構switch語句_java

來源:互聯網
上載者:User
多選擇結構switch語句
在java中為多路分支選擇流程專門提供了switch語句,switch語句根據一個運算式的值,選擇運行多個操作中的一個。他的文法形式如下:
複製代碼 代碼如下:

switch(運算式){
case 運算式常量1:語句1;
break;
case 運算式常量2:語句2;
break;
......
case 運算式常量n:語句n;
break;
[default:語句n+1;]
}

其中,一個case運算式常量成為標號,代表一個case分支的入口。switch語句在運行時首先計算switch圓括弧中“運算式”的值,這個值必須是整型或字元型的,同時後面各個case運算式常量的值的類型應與switch圓括弧中“運算式”的實值型別一致。一個case語句代表一個制定操作,然後轉向結構出口。default子句是可選的,當運算式的值與case運算式常量的值都不匹配時,就運行default子句,轉向結構出口。
最後說一下關於switch中非常重要的幾個注意點。
 
第一、switch ( 整型或字元型變數 ) 中,變數的類型如文中所標,只能是整型和字元類型。它們包含 int,char。當然無符類型或不同的長度整型(unsigned int,short,unsigned char)等都可以。另外,枚舉類型(enum)內部也是由整型或字元類型實現。所以也可以。實型(浮點型)數就不行,如:
複製代碼 代碼如下:

float a = 0.123;
switch(a) //錯誤!a不是整型或字元類型變數。
{
....
}
 

第二、case 之後可以是直接的常量數值,如例中的1、2、3、4,也可以是一個使用常量計算式,如2+2等,但不能是變數或帶有變數的運算式,如 a * 2等。當然也不能是實型數,如4.1,或2.0 / 2 等。
複製代碼 代碼如下:

switch(formWay)
{
case 2-1 : //正確
...
case a-2 : //錯誤
...
case 2.0 : //錯誤
...
}

另外,在case 與常量值之後,需要一個冒號,請注意不要疏忽。
 
第三、break 的作用。break 使得程式在執行完選中的分支後,可以跳出整個switch語句(即跳到switch接的一對{}之後),完成switch。如果沒有這個break,程式將在繼續前進到下一分支,直到遇到後面的break或者switch完成。
比如,假設現在程式進入case 1: 中的分支,但case 1 的分支這回沒有加break:
 
複製代碼 代碼如下:

case 1 :
System.out.println("您是通過搜尋引擎來到本網站的。");
case 2 :
System.out.println("您是通過朋友介紹來到本網站的。");
 

那麼,程式在輸出 "您是通過搜尋引擎來到本網站的。" 之後,會繼續輸出case 2中的 "您是通過朋友介紹來到本網站的。" 。
 
第四、default是可選中,前面我們已經說過它的用處,及如果沒有default,程式在找不到匹配的case分支後,將在switch語句範圍內不做什麼事,直接完成switch。大家也可以在執行個體中將default的代碼注釋掉,然後試運行,並且在選擇時輸入自訂的。
 
第五、必要時,可在各個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 :
...
}

最後看一下例子程式:
複製代碼 代碼如下:

public class TestSwitch //基於字元型
{
public static void main(String[] args)
{
//聲明變數score,並為其賦值為'C'
char score = 'C';
//執行swicth分支語句
switch (score)
{
case 'A':
System.out.println("優秀.");
break;
case 'B':
System.out.println("良好.");
break;
case 'C':
System.out.println("中");
break;
case 'D':
System.out.println("及格");
break;
case 'F':
System.out.println("不及格");
break;
default:
System.out.println("成績輸入錯誤");
}
}
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.