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. 为什么在c语言中使用gets函数是危险的

      If you have code like this: char s[10]; gets( s ); and you type in more than 10 characters when th ...

  2. (Xilinx)FPGA中LVDS差分高速传输的实现

    https://wenku.baidu.com/view/24e8bad86f1aff00bed51ef8.html

  3. UVA 146 ID Codes(下一个排列)

    C - ID Codes Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Statu ...

  4. sass初学入门笔记(一)

    我本身是个新手,一边学sass一边记下的笔记,可能有点罗嗦,但是复习起来的话还是比较全面直观的.当然,最重要的还是去实践,实践得真理 其它 CSS 预处理器语言: CSS 预处理器技术已经非常的成熟, ...

  5. 入门基础之——flash

    不得不说韦老师的课程还是很需要时间去消化.今天改变了学习策略,遇到不会的知识点,先查资料. 以前在单片机编程中,都只是知道代码存在flash中,而一听韦老师的课程,就是nand flash启动或者no ...

  6. TortoiseGit状态图标不能显示

    一开始网上搜到的办法基本都一样,都试过了,没有效果: 办法一: 注册表中找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ ...

  7. socket相关函数中断后重试

    慢系统调用accept,read,write被信号中断时应该重试.对于accept,如果errno为ECONNABORTED,也应该重试. connect虽然也会阻塞,但被信号中断时不能立即重试,该s ...

  8. KMP算法完整教程 (上)

    KMP算法完整教程 全称: Knuth_Morris_Pratt Algorithm(KMP算法) 类型: 高级检索算法 功能: 字符串匹配查找 提出者: D.E.Knuth(克努兹),J.H.Mor ...

  9. CI框架中 类名不能以方法名相同

    昨天晚上一个坑爹的问题折腾了我一晚上,首先我来说下我的代码,我建立了一个index的控制器然后呢  在控制器里有一个index的方法.页面模板都有. if ( ! defined('BASEPATH' ...

  10. JSON动态生成树

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...