切換宣告
switch
語句是 Java 的多路分支語句。它被用來代替長 if
-else if
-else
鏈,使它們更具可讀性。但是,與 if
陳述不同,人們可能不會使用不等式; 必須具體定義每個值。
switch
語句有三個關鍵元件:
case
:這是與switch
語句的引數等價求值的值。default
:如果case
語句都沒有評估為true
,那麼這是一個可選的,全能的表示式。- 突然完成
case
宣告; 通常break
:這是為了防止對進一步的發言進行不期望的評估。
除了 continue
之外,可以使用任何會導致語句突然完成的語句 。這包括:
break
return
throw
在下面的示例中,典型的 switch
語句包含四種可能的情況,包括 default
。
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
switch (i) {
case 0:
System.out.println("i is zero");
break;
case 1:
System.out.println("i is one");
break;
case 2:
System.out.println("i is two");
break;
default:
System.out.println("i is less than zero or greater than two");
}
通過省略 break
或任何突然完成的陳述,我們可以利用所謂的跌倒案例,該案例針對多個值進行評估。這可用於建立值成功的範圍,但仍然不如不等式靈活。
Scanner scan = new Scanner(System.in);
int foo = scan.nextInt();
switch(foo) {
case 1:
System.out.println("I'm equal or greater than one");
case 2:
case 3:
System.out.println("I'm one, two, or three");
break;
default:
System.out.println("I'm not either one, two, or three");
}
在 foo == 1
的情況下,輸出將是:
I'm equal or greater than one
I'm one, two, or three
在 foo == 3
的情況下,輸出將是:
I'm one, two, or three
Version >= Java SE 5
switch 語句也可以與 enum
s 一起使用。
enum Option {
BLUE_PILL,
RED_PILL
}
public void takeOne(Option option) {
switch(option) {
case BLUE_PILL:
System.out.println("Story ends, wake up, believe whatever you want.");
break;
case RED_PILL:
System.out.println("I show you how deep the rabbit hole goes.");
break;
}
}
Version >= Java SE 7
switch
語句也可以與 String
s 一起使用。
public void rhymingGame(String phrase) {
switch (phrase) {
case "apples and pears":
System.out.println("Stairs");
break;
case "lorry":
System.out.println("truck");
break;
default:
System.out.println("Don't know any more");
}
}