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。

1语法格式

Java | 复制
1
2
3
4
5
6
7
8
9
10
11
switch (表达式) {
case 条件1:
    语句1;
    break;
case 条件2:
    语句2;
    break;
...
default:
    语句;
}

2使用示例

int类型switch示例

Java | 复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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示例

Java | 复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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示例

Java | 复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
}

3break

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

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

忘记写break的陷阱

示例:

Java | 复制
1
2
3
4
5
6
7
8
9
10
11
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);
}

输出结果:

Java | 复制
1
2
3
2
3
0

巧用break

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

Java | 复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);

4default

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

示例:

Java | 复制
1
2
3
4
5
6
7
8
9
int x = 0;
switch (x) {
case 1:
    System.out.println(1);
case 2:
    System.out.println(2);
default:
    System.out.println("default");
}

输出结果:

Java | 复制
1
default

Java switch 详解的更多相关文章

  1. Java Annotation详解 理解和使用Annotation

    系统中用到了java注解: 查了一下如何使用注解,到底注解是什么: (1)创建方法:MsgTrace Java Class==> 在Create New Class中: name:输入MsgTr ...

  2. Java IO 详解

    Java IO 详解 初学java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂.而且没有结合到java7 的最新技术,所以自己来整理一下,有错的话请指正, ...

  3. java关键字(详解)

    目录 1. 基本类型 1) boolean 布尔型 2) byte 字节型 3) char 字符型 4) double 双精度 5) float 浮点 6) int 整型 7) long 长整型 8) ...

  4. Java内部类详解

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

  5. 黑马----JAVA迭代器详解

    JAVA迭代器详解 1.Interable.Iterator和ListIterator 1)迭代器生成接口Interable,用于生成一个具体迭代器 public interface Iterable ...

  6. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  7. Java虚拟机详解----JVM常见问题总结

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. [转] Java内部类详解

    作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...

  9. Java面向对象详解

    Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...

随机推荐

  1. X86平台简称

    1.PCH:PCH全称为Platform Controller Hub,是intel公司的集成南桥.AMD SB700/710/750  http://support.amd.com/TechDocs ...

  2. form表单回车Enter不直接提交,类似tab切换

    <input> 控件增加onkeypress事件 onkeypress="return handleEnter(this, event)" JS如下: var keyC ...

  3. [Linux内核]软中断与硬中断

    转自:http://blog.csdn.net/zhangskd/article/details/21992933 本文主要内容:硬中断 / 软中断的原理和实现 内核版本:2.6.37 Author: ...

  4. 关于js中__proto__和prototype的一些理解<转>

    var Person = function(name) {     this.name = name; } var p = new Person(); new操作符的操作是 var p = {} p. ...

  5. am335x gpio控制

    1.执行下面的命令,可以显示目前驱动已经申请到的IO状态 : $ mount -t debugfs debugfs /sys/kernel/debug  $ cat /sys/kernel/debug ...

  6. 示例 - 如何在ASP.NET中应用Spider Studio生成的DLL?

    >> 接前文 "示例 - 如何在Console应用程序中应用SpiderStudio生成的DLL?", 将其运用到ASP.NET中: 1. 创建WebApplicati ...

  7. 关于HTTP的长连接和短连接

    1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议. IP协议主要解决网络路由和寻址 ...

  8. C++ 类的继承二(赋值兼容性原则)

    //赋值兼容性原则 #include<iostream> using namespace std; class PointA{ public: PointA(){ x = ; y = ; ...

  9. 关于Unity的C#基础学习(二)

    一.Debug的使用 int a=3; Debug.Log("a="+a); 二.整数的定义 int m; Debug.Log(m);  //C#比C更严谨,没有初始化的变量打印出 ...

  10. CONTEST23 2014xmoi邀请赛(被pj虐哭)

    http://www.luogu.org/contest/show?tid=23 表示被普及的虐瞎了T_T_T_T_T_T_T_TT_T_T_T_T_T_T_T_T 33名100多分滚粗 各种贪心神题 ...