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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python中的缩进快捷键_取消首行缩进快捷键

    python中的缩进快捷键_取消首行缩进快捷键文章目录前言注意:IDLE开发环境对缩进量的设置前言和其它程序设计语言(如Java、C语言)采用大括号“{}”分隔代码块不同,Python采用代码缩进和冒号(:)来区分代码块之间的层次。在Python中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。注意:Python中实现对代码的缩进,可以使用空格或者Tab键实现。但无论是手动敲空格,还是使用Tab键,通常情况下都是采用4个空

    2022年10月13日
    4
  • 有监督学习VS无监督学习「建议收藏」

    有监督学习VS无监督学习「建议收藏」事先先说明一下:标签就是指的分好的类别,指明标签就是告诉计算机,这个样本属于哪一类。对于聚类的话,是事先类别都没定义好,但是类别的个数一定要告诉计算机这个问题可以回答得很简单:是否有监督(supervised),就看输入数据是否有标签(label)。输入数据有标签,则为有监督学习,没标签则为无监督学习。首先看什么是学习(learning)?一个成语就可概括:举一反三。此处以高考为例,高考的题目在上

    2022年5月25日
    50
  • matlab plot图像_可以画函数图像的app

    matlab plot图像_可以画函数图像的appMatlab使用plot函数绘制图像。

    2022年10月15日
    3
  • 点击率预估算法:FM与FFM[通俗易懂]

    点击率预估算法:FM与FFM[通俗易懂]点击率预估算法:FFM@(计算广告)[计算广告]点击率预估算法FFM1FM1背景11线性模型12二项式模型2FM21FM基本原理22数据分析23参数个数24计算时间复杂度25梯度26训练时间复杂度2FFM1背景及基本原理2模型与最优化问题21模型22最优化问题23自适应学习率24FFM算法的最终形式3完整算法流程31计算梯度32

    2022年4月30日
    82
  • 使用BeanUtils.copyProperties进行对象之间的属性赋值「建议收藏」

    使用BeanUtils.copyProperties进行对象之间的属性赋值「建议收藏」1、使用org.springframework.beans.BeanUtils.copyProperties方法进行对象之间属性的赋值,避免通过get、set方法一个一个属性的赋值/***对象属性拷贝<br>*将源对象的属性拷贝到目标对象**@paramsource源对象*@paramtarget目标对…

    2022年10月4日
    3
  • java实现深拷贝和浅拷贝_深复制与浅复制的区别

    java实现深拷贝和浅拷贝_深复制与浅复制的区别clone顾名思义就是复制,在Java语言中,clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢?1.使用new操作符创建一个对象2.使用clone方法复制一个对象那么这两种方式有什么相同和不同呢?new操作符的本意是分配内存。程序执行

    2022年10月1日
    4

发表回复

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

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