Java switch 详解

概要:

switch 语句由一个控制表达式和多个case标签组成。

switch 控制表达式支持的类型有byte、short、char、int、enum(Java 5)、String(Java 7)。

switch-case语句完全可以与if-else语句互转,但通常来说,switch-case语句执行效率要高。

default在当前switch找不到匹配的case时执行。default并不是必须的。

一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break。

| |目录

语法格式

switch (表达式) {
case 条件1:
	语句1;
	break;
case 条件2:
	语句2;
	break;
...
default:
	语句;
}

使用示例

int类型switch示例

int i = 3;
switch (i) {
case 1:
	System.out.println(1);
	break;
case 2:
	System.out.println(2);
	break;
case 3:
	System.out.println(3);
	break;
default:
	System.out.println(0);
}

枚举(Enum)类型switch示例

package net.xsoftlab.baike;

public class TestSwitch {

	static enum E {
		A, B, C, D
	}

	public static void main(String args[]) {
		E e = E.B;
		switch (e) {
		case A:
			System.out.println("A");
			break;
		case B:
			System.out.println("B");
			break;
		case C:
			System.out.println("C");
			break;
		case D:
			System.out.println("D");
			break;
		default:
			System.out.println(0);
		}
	}
}

String类型switch示例

String str = "C";
switch (str) {
case "A":
	System.out.println("A");
	break;
case "B":
	System.out.println("B");
	break;
case "C":
	System.out.println("C");
	break;
default:
	System.out.println(0);
}

break

break在switch中用于结束当前流程。

一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break。

忘记写break的陷阱

示例:

int i = 2;
switch (i) {
case 1:
	System.out.println(1);
case 2:
	System.out.println(2);
case 3:
	System.out.println(3);
default:
	System.out.println(0);
}

输出结果:

2
3
0

巧用break

实例:输出2015年指定月份的最大天数

int year = 2015;
int month = 8;
int day = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
	day = 31;
	break;
case 2:
	day = 28;
	break;
case 4:
case 6:
case 9:
case 11:
	day = 30;
	break;
}

System.out.println(day);

default

default在当前switch找不到匹配的case时执行。default并不是必须的。

示例:

int x = 0;
switch (x) {
case 1:
	System.out.println(1);
case 2:
	System.out.println(2);
default:
	System.out.println("default");
}

输出结果:

default


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
资料加载中...
已关注 , 取消