首頁 > 軟體

淺談java switch如果case後面沒有break,會出現什麼情況?

2020-09-12 18:00:04

switch表示式的取值:byte,short,int,char

JDK5以後可以是列舉

JDK7以後可以是String

如下程式碼, case「A」 :之後沒有break,此刻會繼續執行 case 「B」:的程式碼 System.out.println("bbbbbbbb");遇到break之後,程式碼執行結束。

public static void main(String[] args) { 
 String s = "A";
 switch (s) {
 case "A":
 System.out.println("aaaaaaaa");
  /*
  * 注意:此處如果沒有新增break,則程式碼會繼續執行,即使不滿足case條件也會執行,直到遇到break
  */
   //break;
 case "B":
 System.out.println("bbbbbbbb");
 break;
 
 default:
 System.out.println("others");
 break;
 } 
 }

結果:

default寫在最前面的情況:

public static void main(String[] args) {
 int x = 2;
 int y = 3;
 switch(x){
 /*
 * default 寫在最前面,但是如果沒有寫break;,還是會無條件執行後面的語句
 */
 default:
 y++;
 System.out.println("default");
 //break;
 case 3:
 y++;
 System.out.println(y);
 case 4:
 y++;
 System.out.println(y); 
 
 }
 System.out.println("y="+y);
 }

結果:

總結:

break;語句"不是必須的"。如果不寫,如果一旦case相應的值成功,但內部沒有break語句,那麼將會無條件(不再進行case匹配)的繼續向下執行其它case中的語句,直到遇到break;語句或者到達switch語句結束。

補充知識:Java小細節——switch有無break的區別

switch大家都很熟悉,可以從一系列程式碼中選出一段去執行,它的格式如下:

switch(c){
 case 1:statement;break;
 case 2:statement;break;
 case 3:statement;break;
 case 4:statement;break;
 case 5:statement;break;
 default:statement;
}

我們來看一下下面這段程式碼,然後判斷下會輸出什麼。

public static void main(String[] args) {
  doSwitch(0);
 }

static void doSwitch(int i) {
 switch (i) {
  case 0: {
   System.out.println(0);
  }
  case 1: {
   System.out.println(1);
  }
  case 2: {
   System.out.println(2);
  }
  case 3: {
   System.out.println(3);
  }
  default:{
   System.out.println("default");
  }
 }
}

執行結果是:

0
1
2
3
default

=================讓我們加上break試試================

雖然switch-case中的break是可選的,但是break會較大的影響到執行的效果,所以得牢記有無break的區別。

以上這篇淺談java switch如果case後面沒有break,會出現什麼情況?就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com