【答疑解惑】java中switch语句陷阱

语音版:

今天群中小伙伴们遇到了一个switch问题我给大家讲解一下,算是Java中的小陷阱吧。

Java中的switch语句穿透:

今天一同学写了类似下面的代码:

int a = 2; switch (a) { case 1: System.out.println(" 1 "); case 2: System.out.println(" 2 "); case 3: System.out.println(" 3 "); case 4: System.out.println(" 4 "); default: System.out.println(" default ");

不知道大家能否看出来这种写法是有问题的,因为每一个case都没有添加break,所以在执行的时候会出现穿透效果,按道理应该只执行a为2的case,可是case等于3、4和default都执行了,在编程中这种情况很低级,但是会有发生,请大家注意一下。一个比较好的习惯是在写case语句的时候先写一条case加上break,不写具体case中的逻辑,然后复制多个,再修改case,再编写每一条case的逻辑。

有不明白Java控制语句的同学可以查看我之前的文章,Java控制流程,里面详细的用图讲解了Java中各种控制语句的执行过程。

上面的代码输出结果:

2 3 4 default

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏纯洁的微笑

jvm系列(一):java类的加载机制

1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Cl...

3716
来自专栏程序员宝库

PHP 中被忽略的性能优化利器:生成器

如果是做Python或者其他语言的小伙伴,对于生成器应该不陌生。但很多PHP开发者或许都不知道生成器这个功能,可能是因为生成器是PHP 5.5.0才引入的功能,...

3006
来自专栏玩转JavaEE

MongoDB数据类型

上篇文章我们介绍了MongoDB的最基本的增删改查操作,也介绍了一些基础的概念,MongoDB中每条记录称作一个文档,这个文档和我们平时用的JSON有点像,但也...

3205
来自专栏醉梦轩

Python和JavaScript中的生成器与协程

Python和JavaScript中都有生成器(Generator)和协程(coroutine)的概念。本文通过分析两者在这两种语言上的使用案例,来对比它们的差...

2132
来自专栏开源优测

[快学Python3]基础知识

设置源文件编码 在默认情况下,Python3源码文件是以UTF-8编码进行保存的,所有的字符串都是unicode编码格式。 一般情况下,我们在源码文件第一行使用...

27713
来自专栏黑泽君的专栏

为什么JAVA对象需要实现序列化?

511
来自专栏禹都一只猫博客

符合语言习惯的Python编程技巧

592
来自专栏Ryan Miao

YAML 语法

YAML 语法 来源:yaml 这个页面提供一个正确的 YAML 语法的基本概述, 它被用来描述一个 playbooks(我们的配置管理语言). 我们使用 YA...

3499
来自专栏QQ会员技术团队的专栏

JavaScript引擎分析

JavaScript引擎分析 一. JavaScript简介 JavaScript是一种动态类型的脚本语言;在1995年时,由Netscape公司的Brend...

2225
来自专栏python学习路

八、多线程爬虫(先占个位置,等整理好线程,进程,协程,异步IO在来写)

计算机的核心是CPU,CPU承担了所有的计算任务。 一个CPU核心,一次只能执行一个任务; 多个CPU核心同时可以执行多个任务。 一个CPU一次只能执行一个进程...

3416

扫码关注云+社区