`
utopialxw
  • 浏览: 367523 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

switch中default、break

    博客分类:
  • java
 
阅读更多

thinging in java中有这段代码

public Shape next() { 
    switch(rand.nextInt(3)) { 
      default: 
      case 0: return new Circle(); 
      case 1: return new Square(); 
      case 2: return new Triangle(); 
    } 
  }

 搜了一下,关于default的位置的讨论

http://www.iteye.com/problems/67170

--------------

我认为比较合适的解释就是:在可以完全预见的情况下,只有0、1、2三种值,所以default放在最前面,表明了default的情况不可能发生。default后面没有return,所以就相当于default 和case 0 公用一段return new Circle();

----------------------------------

我又测试了几段代码

int i = 0;
		switch (i) {
		default:
			//break;
		case 0:
			System.out.println("0000");
			//break;
		case 1:
			System.out.println("1111");
			//break;
		case 10:
			System.out.println("101010");
			break;
		
		}

 当i=0时

0000
1111
101010

当i=1时

1111
101010

当i=9时

0000
1111
101010

当i=10时

101010

---------------

一开始没理解i=0,1,9时,为什么101010也会打印出来,后来才恍然大悟

理解这个的关键是case(包括default)若没有break,就相当于case穿透/自动贯穿/fall through等等这些术语

比如上面的代码:因为default、case0 都没有break,那么default、case0、case1是公用一段return的!!

自此,真相大白,世界安静了

继而感叹自己理解力太弱了。。。。。哎

 

分享到:
评论
2 楼 utopialxw 2013-06-06  
http://docs.oracle.com/javase/specs/jls/se5.0/html/statements.html#14.11
1 楼 utopialxw 2013-06-06  
再仔细想了一下,感觉是大一的时候老师讲的稍微有点问题:
没有break,会继续往下执行
若当时讲的是:若没有break,则表示与下一个case合并,不管中间是否存在代码
。。。。。
--------------
思考很重要哇。。。中国的教育完全是填鸭。。。

相关推荐

    switch语句&break关键字&default关键字.pdf

    switch语句&break关键字&default关键字.pdf

    解析c语言switch中break语句的具体作用

    在switch条件选择中,没有了循环控制,break又起什么作用呢? 解决办法:1. switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个...

    switch语句的妙用(必看篇)

    这里a和case列表中从上而下逐一做比较,如果匹配就执行case中的代码,若有break则跳出,无break则继续往下匹配,直到新的匹配和break或switch代码块结束。 注意: a和case值的匹配算法是执行严格相等比较的(‘===’...

    js switch case default 的用法示例介绍

    switch case default的用法应该存在一部分人不会使用吧,其实很简单就是每个case后,一定要加:break;default,就相当于else,不会的朋友可以了解下

    switch函数使用示例

    4.当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。 5.不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。 6.一个 ...

    Java领域、switch函数详细解析,代码演示,作业帮助,问答咨询~

    如果没有 break,会继续执行下一个 case,直到遇到 break 或者 switch 结束。 注意事项: switch 中的表达式必须是整数、字符或枚举类型。 每个 case 中的值必须是常量或字面量,不能是变量。 case 的值不能重复,...

    本资源使用 C 语言中 switch 语句作为示例代码,它根据用户输入的数字打印相应的星期天

    在 C 语言中,switch 是一个关键字,用于控制流程的分支。它通常与 case、default 关键字一起使用,用于在多个选项之间进行选择。 switch 语句的基本结构如下: switch (表达式) { case 常量1: // 执行语句1 ...

    switch demo

    switch(command){ case 1: System.out.println("显示全部记录"); break; case 2: System.out.println("查询登录记录"); break; case 0: System.out.println("欢迎使用"); break; ...

    C++编程中break语句和continue语句的学习教程

    如果没有 break 语句,则将执行从匹配的 case 标签到 switch 语句末尾之间的每个语句,包括 default 子句。 在循环中,break 语句将终止执行最近的 do、for 或 while 封闭语句。 控制权将传递给终止语句之后的语句...

    switch.docx `switch`语句是C++中的一种流程控制语句,通常用于根据表达式的值选择执行不同的代码块 下面是`

    `switch`语句是C++中的一种流程控制语句,通常用于根据表达式的值选择执行不同的代码块。下面是`switch`语句的基本结构: ```cpp switch (expression) { case value1: // 当 expression 等于 value1 时执行这里的...

    Switch简介及使用实例新手必学.docx

    在C语言中,`switch`语句是一种控制结构,用于根据表达式的值选择性地执行多个分支中的一个。这种结构特别适合用于当你有多个可能的整数或枚举值并且你想根据这些值执行不同的代码块时。 ### `switch`函数简介 `...

    switch语句详细讲解+多个例子.docx

    1. **基本概念**:我们将从头开始,详细解释`switch`语句的各个组成部分,包括`switch`关键字、表达式、`case`标签、`break`语句和`default`标签。我们会逐步讲解它们的作用和用法。 2. **示例1:工作日与周末**:...

    使用`switch`语句的示例.pdf

    在每个`case`代码块的末尾,我们使用`break`语句来跳出`switch`语句。如果用户的选择没有匹配到任何一个`case`,则会执行`default`代码块。 在以上示例中,如果用户选择了`1`,则会输出"开始游戏...";如果选择了`2...

    c语言switch函数.docx

    它用于从一组值中确定满足条件的值,从而确定执行哪一段代码: 1、switch语句的基本结构 switch 语句的基本结构如下: switch (表达式) { case 值1:语句1; break; case 值2:语句2; break; …… default:...

    js中switch语句的学习笔记

    default: 默认代码块 } 代码解释: 计算一次 switch 表达式; 把表达式的值与每个 case 的值进行对比; 如果存在匹配,则执行关联代码。 如下: switch (new Date().getDay()) { case 0: day = "星期天"; ...

    IOS Swift基础之switch用法详解

    Swift中switch的case语句中不需要添加break Swift中需要考虑所有情况,default是必要的。 case分支可以添加多个条件,用,分割 case不局限与常量,可以使使用范围 switch里可以使用元组 switch默认不需要添加break,...

    基于C语言实现switch case语句(源码)

    在main函数中,定义了一个字符变量grade,用于存储输入的成绩等级。 使用printf函数提示用户输入成绩等级,并使用scanf函数读取用户输入的成绩等级,存储到变量grade中。...使用break语句终止switch case语句的执行。

    php switch语句多个值匹配同一代码块应用示例

    先说说switch()语句的格式 ...仅当一个 case 语句中的值和 switch 表达式的值匹配时 PHP 才开始执行语句,直到 switch 的程序段结束或者遇到第一个 break 语句为止。如果不在 case 的语句段最后写上 bre

Global site tag (gtag.js) - Google Analytics