Java switch 详解

Java switch 详解switch语句由一个控制表达式和多个case标签组成。switch控制表达式支持的类型有byte、short、char、int、enum(Java5)、String(Java7)。swi

大家好,又见面了,我是你们的朋友全栈君。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154345.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Scanner的hasNext()方法

    Scanner的hasNext()方法一、实例代码importjava.util.*;publicclassScannerKeyBoardTest{publicstaticvoidmain(String[]args){System.out.println("请输入若干单词,以空格作为分隔");Scannersc=newScanner(System…

    2022年7月20日
  • Flume+Kafka整合案例实现

    Flume+Kafka整合案例实现 一、为什么要集成Flume和Kafka我们很多人在在使用Flume和kafka时,都会问一句为什么要将Flume和Kafka集成?那首先就应该明白业务需求,一般使用Flume+Kafka架构都是希望完成实时流式的日志处理,后面再连接上Flink/Storm/SparkStreaming等流式实时处理技术,从而完成日志实时解析的目标。第一、如果Flume直接对接实时计算框架,当数据采集速…

    2022年6月23日
  • 《linux 内核全然剖析》 chapter 2 微型计算机组成结构

    《linux 内核全然剖析》 chapter 2 微型计算机组成结构

    2021年11月16日
  • 【转】Smartphone–Android真机管理平台[通俗易懂]

    【转】Smartphone–Android真机管理平台

    2022年3月11日
  • 代理IP池(sqlmap外部代理ip池)

    这些公共代理是完全免费提供的,不需要任何授权。免费代理通常是开放的、流行的公共代理。与私人代理不同,公共代理不需要注册或密码。事实上,它们是负责安装在计算机上的代理服务器并且不关心更改默认设置的系统管理员的错误或疏忽。因此,服务器通过特殊的扫描仪快速定位到网络中,成为渴望匿名的公众的财产。这些信息足以安全地浏览全球网络,而无需显示您的真实IP地址。这些代理有很大的优势:他们有一个简单的设置-这些代理不需要授权并且设置简单他们是免费的!没有流量限制或使用目的但是,除了所有这些优点之外,这

    2022年4月14日
  • mysql联合索引的使用规则

    mysql联合索引的使用规则从一道有趣的题目开始分析:假设某个表有一个联合索引(c1,c2,c3,c4)以下选项哪些字段使用了该索引:Awherec1=xandc2=xandc4>xandc3=xBwherec1=xandc2=xandc4=xorderbyc3Cwherec1=xandc4=xgroupbyc3,c2Dwherec1=?andc5

    2022年6月4日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号