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的!!
自此,真相大白,世界安静了
继而感叹自己理解力太弱了。。。。。哎
相关推荐
以上示例中,我们使用了switch语句来处理不同的输入情况,使用break关键字来确保每次只执行一个case分支,避免了case穿透问题,使用default关键字来处理不匹配的意外情况。通过这些示例,我们可以看到switch语句在...
下面将详细介绍 C++ 中的 switch 语句、goto 语句、break 语句、for 循环语句等控制语句。 一、switch 语句 switch 语句是一种选择结构语句,用于根据不同的值执行不同的语句。其基本形式为: ```cpp switch (整型...
在C#编程语言中,`break` 和 `switch` 是两个关键的控制流程语句,它们在编写逻辑和控制程序执行路径时起着至关重要的作用。让我们深入了解一下这两个概念及其在实际开发中的应用。 首先,`switch` 语句是C#中用...
标题中的“多重选择:switch和break”指的是在编程语言中,特别是C/C++或类似的语法结构中,用于实现多路分支选择的结构——`switch`语句和`break`关键字。`switch`语句允许根据不同的条件执行不同的代码块,而`...
在switch条件选择中,没有了循环控制,break又起什么作用呢? 解决办法:1. switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个...
在编程语言中,`switch`语句是一种流程控制结构,常用于执行多路分支选择。在C语言及其衍生语言(如C++、C#、Java等)中,`switch`语句提供了一种比多个`if...else if...else`语句更简洁、更易读的方式来实现条件...
在`switch`语句中,`break`语句是用于跳出当前`switch`结构的关键,防止代码意外地执行到下一个`case`。但请注意,最后一个`case`的`break`可以省略,因为在到达末尾时`switch`语句自然结束,不会继续执行后续代码。...
这里a和case列表中从上而下逐一做比较,如果匹配就执行case中的代码,若有break则跳出,无break则继续往下匹配,直到新的匹配和break或switch代码块结束。 注意: a和case值的匹配算法是执行严格相等比较的(‘===’...
在C语言中,`switch`语句是一种控制流程语句,用于实现多路选择,它提供了比`if...else if...else`结构更简洁的语法。然而,`switch`语句的一个常见陷阱是忘记在每个`case`后面的语句块末尾使用`break`语句。这会...
在本例中,我们将深入探讨`switch`、`case`和`default`的用法,并通过示例来帮助理解。 首先,让我们了解`switch`的基本结构: ```javascript switch (expression) { case value1: // code block to be executed...
在switch语句中,break语句用于结束switch语句的执行。当switch语句遇到break语句时,会跳出switch语句的执行,并继续执行switch语句后的语句。 switch语句的应用 switch语句的应用非常广泛,以下是一些常见的应用...
* 在 switch 语句中,如果没有 break 语句,程序将继续执行到下一个 case 语句。 * 如果没有 default 语句,程序将执行到结束。 * 在 switch 语句中,各个 case 语句的顺序并不影响执行结果。 switch 语句的优点:...
在switch语句中,break语句的使用可以使得程序结束switch结构,跳出switch语句继续执行其他语句。这一点非常重要,因为它可以使得程序的执行更加灵活和高效。 其次,在循环结构中,break语句的使用可以结束本层循环...
在 Java 和 C# 中,`switch` 语句在语法和行为上有一些显著的区别,尤其是在处理多条 `case` 的连续执行和 `break` 的使用上。 首先,我们来看 C# 中的 `switch` 语句示例: ```csharp class StudentGrade { ...
在C#编程语言中,`switch`语句是一种条件控制结构,它允许程序根据不同的条件执行不同的代码块。`switch`语句在处理多个可能情况时比一系列`if...else if...else`语句更为简洁和高效。让我们深入探讨一下`switch`在...
在 C 语言中,switch 是一个关键字,用于控制流程的分支。它通常与 case、default 关键字一起使用,用于在多个选项之间进行选择。 switch 语句的基本结构如下: switch (表达式) { case 常量1: // 执行语句1 ...
- 当 switch 语句中没有任何 `break` 语句时,程序将查找匹配的 `case` 子句。一旦找到,就会从该子句开始顺序执行每一行代码,直到遇到 switch 结束。 - 如果没有找到匹配的 `case` 子句,则从 `default` 子句...
### 在Java Switch中使用String作为分支条件 #### 引言 在Java中,`switch`语句最初只能处理`int`、`char`以及`enum`类型的数据。然而,在实际开发过程中,有时需要根据字符串(`String`)来执行不同的逻辑分支。...
### 枚举类型在switch语句中的用法 在编程语言中,枚举(Enum)是一种数据类型,它由一组固定的常量组成,通常用于表示有限的预定义值集。枚举类型的使用可以让代码更加清晰易读,并且有助于减少错误的发生。在本篇...
switch语句是C++语言中的一种控制流语句,用于根据不同的条件执行不同的代码块。在本文中,我们将详细介绍switch语句的执行过程、注意要点、例题讲解和作业等。 一、switch语句的执行过程 switch语句的执行过程...