天天看點

switch使用需要注意的幾點

switch的文法格式:

switch (整型或者字元串類型的變量) {
		case 變量可能值1:
			分支一;
			break;
		case 變量可能值2:
			break;
		default:
			最後分支;
			break;
		}
           

1、switch 後面括号裡的參數類型

在1.7版本之前,這個參數必須是int類型或者可以隐式轉換為int類型的變量(例如byte、short、char)以及他們的包裝類(Integer等)。

在1.7版本之後可以支援string類型的變量。

常見面試題會問到string和long是否可以作為switch的開關參數。long是不可以轉換為int類型的,是以long類型的變量不可以。

2、case之後可以是一個直接的常量值,例如1、2、3、4……也可以是一個使用常量計算式如2+2等,但不能是變量或者帶有變量的表達式,如2*a

另外,在case與常量值之後要有一個:,注意不要疏忽了

3、break的作用

break是跳出目前swtch的{},break可以使代碼執行完switch的一個分支後結束switch。

如果case後面的分支代碼不加break,那麼程式執行完該分支後會繼續執行下一分支内的代碼直到遇見break或者switch執行完。

例如:

public class SwitchDemo {
	public static void main(String[] args) {
		int i=3;
		
		switch (i) {
		case 1:
			System.out.println("今天是星期一");
			break;
		case 2:
			System.out.println("今天是星期二");
			break;
		case 3:
			System.out.println("今天是星期三");
			break;
		case 4:
			System.out.println("今天是星期四");
			break;
		case 5:
			System.out.println("今天是星期五");
			break;
		case 6:
			System.out.println("今天是星期六");
			break;
		default:
			System.out.println("今天是星期日");
			break;
		}
	}
}
           

執行後輸出的肯定是“今天是星期三”,但是我們将分支3中的break注釋掉之後就會輸出:

今天是星期三

今天是星期四

當我們将所有的break注釋掉之後會輸出:

今天是星期三

今天是星期四

今天是星期五

今天是星期六

今天是星期日

4、default是可選的,就是當所有的分支都不比對的時候,程式會執行default内的代碼,如果沒有,那就不執行呗。