【答疑解惑】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 条评论
登录 后参与评论

相关文章

来自专栏Ryan Miao

YAML 语法

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

3819
来自专栏醉梦轩

Python和JavaScript中的生成器与协程

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

2322
来自专栏xcywt

关于delete 和 new

关于new和delete,有如下代码 // new_test.cpp #include<iostream> using namespace std; cl...

2016
来自专栏专注 Java 基础分享

虚拟机类加载机制

虚拟机把字节码文件从磁盘加载进内存的这个过程,我们可以粗糙的称之为「类加载」,因为「类加载」不仅仅是读取一段字节码文件那么简单,虚拟机还要进行必要的「验证」、「...

4637
来自专栏玩转JavaEE

MongoDB数据类型

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

3355
来自专栏owent

从Javascript到Typescript到Node.js

最近看了点typescript的东西,加上以前看过的一点点Node.js,所以就想把他们系统地整理一下。

1232
来自专栏用户2442861的专栏

《Java虚拟机原理图解》 1.1、class文件基本组织结构

http://blog.csdn.net/luanlouis/article/details/39892027

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

JavaScript引擎分析

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

2405
来自专栏月色的自留地

Python2中文处理纪要

1695
来自专栏向治洪

类加载器原理

1.类的加载过程   JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示: ?...

2118

扫码关注云+社区