`
utopialxw
  • 浏览: 369874 次
  • 性别: 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关键字来确保每次只执行一个case分支,避免了case穿透问题,使用default关键字来处理不匹配的意外情况。通过这些示例,我们可以看到switch语句在...

    C++switch goto break for 循环 教程与实例

    下面将详细介绍 C++ 中的 switch 语句、goto 语句、break 语句、for 循环语句等控制语句。 一、switch 语句 switch 语句是一种选择结构语句,用于根据不同的值执行不同的语句。其基本形式为: ```cpp switch (整型...

    C#051break和switch今天星期几

    在C#编程语言中,`break` 和 `switch` 是两个关键的控制流程语句,它们在编写逻辑和控制程序执行路径时起着至关重要的作用。让我们深入了解一下这两个概念及其在实际开发中的应用。 首先,`switch` 语句是C#中用...

    多重选择:switch和break.7z

    标题中的“多重选择:switch和break”指的是在编程语言中,特别是C/C++或类似的语法结构中,用于实现多路分支选择的结构——`switch`语句和`break`关键字。`switch`语句允许根据不同的条件执行不同的代码块,而`...

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

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

    switch、case、break语句的简单应用

    在编程语言中,`switch`语句是一种流程控制结构,常用于执行多路分支选择。在C语言及其衍生语言(如C++、C#、Java等)中,`switch`语句提供了一种比多个`if...else if...else`语句更简洁、更易读的方式来实现条件...

    C语言程序设计(第2版)-2期 经验技巧4-2 switch语句中default的书写位置.pdf

    在`switch`语句中,`break`语句是用于跳出当前`switch`结构的关键,防止代码意外地执行到下一个`case`。但请注意,最后一个`case`的`break`可以省略,因为在到达末尾时`switch`语句自然结束,不会继续执行后续代码。...

    switch语句的妙用(必看篇)

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

    C语言程序设计(第2版)-2期 常见问题4-5 switch语句中忘记使用break.pdf

    在C语言中,`switch`语句是一种控制流程语句,用于实现多路选择,它提供了比`if...else if...else`结构更简洁的语法。然而,`switch`语句的一个常见陷阱是忘记在每个`case`后面的语句块末尾使用`break`语句。这会...

    js switch case default 的用法示例介绍

    在本例中,我们将深入探讨`switch`、`case`和`default`的用法,并通过示例来帮助理解。 首先,让我们了解`switch`的基本结构: ```javascript switch (expression) { case value1: // code block to be executed...

    C语言中的switch语句基本用法

    在switch语句中,break语句用于结束switch语句的执行。当switch语句遇到break语句时,会跳出switch语句的执行,并继续执行switch语句后的语句。 switch语句的应用 switch语句的应用非常广泛,以下是一些常见的应用...

    C语言switch语句学习教案.pptx

    * 在 switch 语句中,如果没有 break 语句,程序将继续执行到下一个 case 语句。 * 如果没有 default 语句,程序将执行到结束。 * 在 switch 语句中,各个 case 语句的顺序并不影响执行结果。 switch 语句的优点:...

    C语言程序设计中break语句分析.pdf

    在switch语句中,break语句的使用可以使得程序结束switch结构,跳出switch语句继续执行其他语句。这一点非常重要,因为它可以使得程序的执行更加灵活和高效。 其次,在循环结构中,break语句的使用可以结束本层循环...

    switch语句在java和c#中的区别

    在 Java 和 C# 中,`switch` 语句在语法和行为上有一些显著的区别,尤其是在处理多条 `case` 的连续执行和 `break` 的使用上。 首先,我们来看 C# 中的 `switch` 语句示例: ```csharp class StudentGrade { ...

    c#Switch.rar

    在C#编程语言中,`switch`语句是一种条件控制结构,它允许程序根据不同的条件执行不同的代码块。`switch`语句在处理多个可能情况时比一系列`if...else if...else`语句更为简洁和高效。让我们深入探讨一下`switch`在...

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

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

    c 语言 switch 语句学习

    - 当 switch 语句中没有任何 `break` 语句时,程序将查找匹配的 `case` 子句。一旦找到,就会从该子句开始顺序执行每一行代码,直到遇到 switch 结束。 - 如果没有找到匹配的 `case` 子句,则从 `default` 子句...

    在java switch中使用String作为分支条件

    ### 在Java Switch中使用String作为分支条件 #### 引言 在Java中,`switch`语句最初只能处理`int`、`char`以及`enum`类型的数据。然而,在实际开发过程中,有时需要根据字符串(`String`)来执行不同的逻辑分支。...

    枚举类型在switch语句中的用法

    ### 枚举类型在switch语句中的用法 在编程语言中,枚举(Enum)是一种数据类型,它由一组固定的常量组成,通常用于表示有限的预定义值集。枚举类型的使用可以让代码更加清晰易读,并且有助于减少错误的发生。在本篇...

    C++语言:switch语句最详细讲解.pdf

    switch语句是C++语言中的一种控制流语句,用于根据不同的条件执行不同的代码块。在本文中,我们将详细介绍switch语句的执行过程、注意要点、例题讲解和作业等。 一、switch语句的执行过程 switch语句的执行过程...

Global site tag (gtag.js) - Google Analytics