1. 程式人生 > >switch case default 語句的的使用以及注意事項

switch case default 語句的的使用以及注意事項

首先我們來看一下它們基本的定義
switch(表示式)
{
case 取值1:
輸出語句;
break;
。。。。
default:
輸出語句;
break;
}
上面的執行流程是這樣的,
1.從switch語句開始,看switch後面括號內的表示式,然後進行下一步。
2.找到case裡面那個取值與表示式滿足,就執行哪一個case,然後break跳出程式。如果
所有的case都不滿足表示式,那麼就執行下一步。
3.當case 都不滿足時,執行default語句,輸出結果。
例項如下:
class Demo4 
{
public static void main(String[] args) 
{
int x=3,k=2;
default:
System.out.println(k+=4);
break;
switch (x)
{
case 1:
System.out.println(k+=1);
break;
case 2:
System.out.println(k+=2);
break;
case 3:
System.out.println(k+=3);
break;


}
}
}
輸出的結果為5;
思考:
1.若將default的位置換到case 1 上面那麼結果是不是還是5呢?
答案是肯定的,無論default的位置在哪裡,輸出的結果都沒有問題,都會與default在最下面一樣。


2.若是case 3 內的break;忘記加了結果會怎麼樣呢?
則輸出結果為5和9;這是因為缺少break導致case穿透,繼續執行了case 3 後面的default;如果現在把
default挪到case 1 上面則輸出結果就會是5。


3.如果把所有的break都去掉,則輸出結果和default的位置會輸出什麼不同的結果
輸出結果為5和9;把default放在其他位置結果還是5;


4.如果把x的值改為5沒有break則造成的結果是什麼?
class Demo4 
{
public static void main(String[] args) 
{
int x=5,k=2;
switch (x)
{
case 1:
System.out.println(k+=1);
case 2:
System.out.println(k+=2);
case 3:
System.out.println(k+=3);
default:
System.out.println(k+=4);
}
}
}
default在最下面則結果為6,當default在case 1 上面時則輸出結果為6 7 9和12,造成這種結果的原因是
case穿透,即當讀完default的時候,沒有跳出程式,繼續讀取case 1 然後 case 2 ,case 3 。若把default
放在case 1 和case 2 之間,則輸出結果為6 8和11 ,故總結為:若switch中所有的case與表示式不匹配,讀
default後,若都沒有break結束,則default在哪裡他前面的case都會被它吃掉,不會讀取,只能讀取default以及
它之後的case。

相關推薦

switch case default 語句的的使用以及注意事項

首先我們來看一下它們基本的定義 switch(表示式) {case 取值1:輸出語句;break;。。。。default:輸出語句;break; } 上面的執行流程是這樣的, 1.從switch語句開

java筆記 關於switch語句注意事項

switch是一個分支語句。基本結構:switch(expr){    case value1:      statement;        break;     ...case valueN:      statement;        break;default: 

Java的switch語句注意事項

/* 注意事項: A:case後面只能是常量,不能是變數,多個case後面的值不能相同 B:default可以省略,但是不建議,因為他的作用是對不正常的值進行提示

鎖的優化以及注意事項

1.減少鎖持有的時間。 只在有必要時進行同步。 2.減少鎖的粒度 分割資料結構 concurrentHashMap對應不同的區段segment進行加鎖,減少鎖鎖定的範圍。 concurrentHashMap 首先使用無鎖的方式求和。如果失敗了那麼就使用加鎖的方式求和。(先獲取所有

socket程式設計UDP協議以及注意事項

//伺服器 #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <

列隊題解以及注意事項

一道十分interesting的題目 這道題顯然要使用資料結構維護。但是n的規模十分大。我們便可以開n棵線段樹,動態開點。但是最後一列比較特殊,所以我們再開一棵線段樹維護最後一列。至於怎麼操作?我們考慮權值線段樹。權值線段樹一般是維護:權值為[L,r]的數有多少是滿足某種條件的。本道題目中我們維護區間[L,

Tomcat下載以及安裝、eclipse工具配置tomcat9的具體步驟以及注意事項!!!

      (小白經驗,大咖勿噴) 開始學前端的一些技術了,最讓人頭疼的就是環境的配置以及必要軟體的安裝,比如資料庫mysql、伺服器Tomcat、eclipse工具等等。  自己也度娘了很多大咖的經驗,但看到的教程以及經驗都很久了,我下載安裝的又是最新版

JS中setInterval()和clearInterval()的使用以及注意事項 (實用,贊)

原文出處:https://blog.csdn.net/YDesire/article/details/81124331 延伸閱讀:clearInterval(timer)和timer = null的區別 setInterval(): 間隔指定的毫秒數不停地執行指定的程式碼,定時器 clear

微服務架構組成以及注意事項

(一)、架構分解 閘道器叢集:資料的聚合、實現對接入客戶端的身份認證、防報文重放與防資料篡改、功能呼叫的業務鑑權、響應資料的脫敏、流量與併發控制等 業務叢集:一般情況下移動端訪問和瀏覽器訪問的閘道器需要隔離,防止業務耦合 Local Cache:由於客戶端訪問業務可能需要呼叫多個服務聚合,所以本地快

JUnit4測試類使用,以及注意事項

 專案的目錄配置檔案:  建立測試類: import org.activiti.engine.*; import org.activiti.engine.identity.User; import org.activiti.engine.impl.persiste

Android NDK中socket的用法以及注意事項分析

Android NDK中使用socket的整個過程分為以下幾部分:第一部分: 建立socket並繫結IP和埠 複製程式碼程式碼如下: #include <sys/select.h> #include <sys/socket.h> #include <arpa/

如何啟動單節點zookeeper以及注意事項

1、安裝jdk,因為zookeeper是基於java進行開發的; 2、將zookeeper解壓之後,再zookeeper目錄下conf目錄下有一個zoo_sample.cfg,將它改名成zoo.cfg,因為zookeeper啟動時自動載入的是zoo.cfg檔案; 3、安裝單機版本只需要更改z

taro框架的缺陷以及注意事項

https://www.jianshu.com/p/9d3318f7f219 1.不要使用 eval() 2. 禁止使用 Object 構造器 let config = new Object() // ✗ 錯誤   3. 不使用 Generator 函式語法

SWIFT4.0學習01 - 函式的命名、呼叫以及注意事項

swift語法中函式的使用大概分為以下幾種: swift中函式的命名格式 無返回值函式 有引數有返回值的函式 多個返回值的函式 如何定義外部引數名 如何忽略引數名 如何給引數設定預設值 如何定義可變引數 修改外部引數的值,Inout關鍵字的使用 函式的型別 函式

docker命令以及注意事項

docker #檢視docker執行程序 docker ps #檢視docker的所有服務 docker ps -a #docker下載映象 docker pull centos #預設為最新的版本 #docker檢視映象 docker image #docker刪除 docker rmi im

初次使用Mybatis的理解以及注意事項

原生的開發模式   使用原生模式開發的時候,通常是這個過程:   1、通常會建立實體類,每一個實體類對應一張表。   2、為一個實體類建立一個dao的介面   3、建立一個實現dao介面的實現類   4、建立一個處理業務邏輯service介面   5、建立一個類,用來實現service介面。  

Android筆記----listview顯示原理以及注意事項

 listview顯示原理 (瞭解)     1.要考慮listview顯示的條目數    getcount     2.考慮listview每個條目顯示的內容   getview     3.考慮每個item的高度,因為螢幕的多樣化     4.還要考慮listvie

Android 混合開發以及注意事項以及h5上圖片在android機器上不顯示問題

因為這個app地嵌入h5做導航,所以需要呼叫android的互動進行獲取定位資訊和其他一些功能,做的效果是H5調Android打電話以及呼叫android手機相簿選擇圖片,現在總結下: 一.打電話以及定位: 1.定義h5呼叫的名稱: webView.addJavascriptInt

rac相關命令以及注意事項

重啟HAS: crsctl stop has -f crsctl start has crsctl start cluster crs_stat -t 資料庫中檢視兩節點叢集資訊: show parameter cluster 檢視記憶體相關大小 show sppar

Java筆記:成員變數,區域性變數,類變數,例項變數以及注意事項

區域性變數:方法中定義的變數。 成員變數(類似C中的全域性變數):成員變數定義在方法體和語句塊之外。成員變數就概括描述了類中的變數,不區分static。是以下變數的統稱。 類變數(靜態變數):獨立於方法之外的變數,屬於類本身。需要static修飾,事實上,類變數就是以static修飾的獨立於方法之外的成員