`
fanyo
  • 浏览: 44422 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Switch 没有break和default位置乱放情况分析

J# 
阅读更多
package flowcontrol;

public class SwitchCase {
	// first default
	public static void testFirst(int i) {
		switch (i) {
		default:
			System.out.println("default");// first default
		case 1:
			System.out.println("one");
		case 2:
			System.out.println("two");
		case 3:
			System.out.println("there");
		}
	}

	// last default
	public static void testLast(int i) {
		switch (i) {
		case 1:
			System.out.println("one");
		case 2:
			System.out.println("two");
		case 3:
			System.out.println("there");
		default:
			System.out.println("default");// last default
		}
	}

	// middle default
	public static void testMiddle(int i) {
		switch (i) {
		case 1:
			System.out.println("one");
		case 2:
			System.out.println("two");
		default:
			System.out.println("default");// middle default
		case 3:
			System.out.println("there");

		}
	}

	public static void main(String[] args) {
		// first default
		testFirst(2);
		System.out.println("------------------");
		testFirst(9);

		System.out.println("|||||||||||||||||||||||||||||||||||");

		// last default
		testLast(2);
		System.out.println("----------------");
		testLast(9);

		System.out.println("|||||||||||||||||||||||||||||||||||");
		// middle default
		testMiddle(2);
		System.out.println("----------------");
		testMiddle(9);

	}

}



输出结果是什么呢,看了结果,我是这么理解的:
(1)switch语句关键地方是进入点,有了进入点没有break的情况下会执行到底
(2)没有匹配值的时候default就是进入点,进入default以后会和普通进入点一样,如果没有break继续执行下面语句
two
there
------------------
default
one
two
there
|||||||||||||||||||||||||||||||||||
two
there
default
----------------
default
|||||||||||||||||||||||||||||||||||
two
default
there
----------------
default
there
分享到:
评论
1 楼 fanyo 2009-08-10  
public class B {  
       
    public static void main(String Args[]){  
        int i =1 ,j =0;  
          
        switch(i){  
            default:j+=2;  
            case 2:j+=6;  
            case 4:j+=6;  
              
            case 0:j+=4;  
              
              
        }  
          
      
          
        System.out.println(j);  
          
    }  

这样就不难理解输出结果18了
switch 每次搞懂了记住了,然后又混了,特别default 和break 组合很乱的时候,
记住进入点,和 没break 顺序进行,感觉思路清晰多了

相关推荐

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

    以上示例中,我们使用了switch语句来处理不同的输入情况,使用break关键字来确保每次只执行一个case分支,避免了case穿透问题,使用default关键字来处理不匹配的意外情况。通过这些示例,我们可以看到switch语句在...

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

    C++ switch、goto、break、for 循环教程与实例 C++ 语言中,控制语句是编程的核心组件之一。控制语句用于控制程序的执行流程,包括选择结构、循环结构和跳转语句等。下面将详细介绍 C++ 中的 switch 语句、goto ...

    多重选择:switch和break.7z

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

    C#051break和switch今天星期几

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

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

    总结一下,`switch`语句中的`default`可以出现在任何位置,但为了避免代码混乱和不必要的执行,通常将其放在最后。`default`后的`break`是可选的,但根据需要应谨慎使用,以确保代码的正确流程。理解这些细节对于...

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

    若没有`break`,程序会"落入"(fall through)下一个`case`,除非遇到`break`或者`switch`结束。 4. **default**:可选的`default`子句,当`expression`不匹配任何`case`时执行。这提供了一个默认的操作路径,确保...

    c 语言 switch 语句学习

    以上示例说明了 switch 语句在不同情况下是如何工作的,特别是在 `break` 语句使用不当的情况下可能导致的意料之外的结果。通过这些示例,我们可以更好地理解和掌握 switch 语句的使用技巧,从而在实际编程中更加...

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

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

    switch语句的妙用(必看篇)

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

    c#Switch.rar

    `switch`语句在处理多个可能情况时比一系列`if...else if...else`语句更为简洁和高效。让我们深入探讨一下`switch`在C#中的用法,以及如何通过代码示例来理解它。 `switch`语句的基本语法如下: ```csharp switch ...

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

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

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

    switch语句是一种多分支选择语句,它的执行过程可以分为五步:计算switch语句表达式的值,依次与多个常量做比较,当表达式的值与常量相等时,执行case后的语句,当执行break语句时,结束switch语句,如果没有break,...

    7enum和switch语句联合案例分析VC共6页.pdf

    在6页的案例分析中,可能涵盖了如何在实际项目中设计和实现`enum`类型,如何有效地利用`switch`语句进行条件判断,以及如何避免`switch`语句的常见陷阱,比如`switch`中的`case`值重叠或遗漏`break`导致的...

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

    4. 如果switch表达式的值等于某个case后的值,但该case语句不包含break语句,则控制流将继续执行后续的case语句,直到遇到break语句为止。 二、switch语句的注意要点 1. switch语句中使用的表达式必须是整型或可以...

    Objective-C switch 语句

    在Objective-C中,`switch`语句是一种条件控制结构,用于根据不同的情况执行不同的代码块。它与C语言中的`switch`语句基本相似,但在某些方面有所扩展和改进,使得在Objective-C中使用更加灵活。 ### 1. `switch`...

    switch的用法和短语例句文档汇总

    3. **fallthrough效果**:在没有`break`的情况下,程序会"掉入"下一个`case`,这种现象称为fallthrough。 4. **`default`的可选性**:虽然可选,但通常推荐使用`default`来处理未知或未预见的情况。 四、实例解析 ...

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

    因为没有`break`,程序会依次执行`case 9`, `case 8`, `case 7`, `case 6`和`default`,最后`grade`的值被设为'D',这显然是错误的结果。 修正这个问题的方法是在每个`case`后面的语句块末尾加上`break`,如下所示...

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

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

    Java switch case 语句.docx

    - 示例2和3展示了没有break的情况,即使匹配成功,也会继续执行后续的case,直到遇到break或switch的结尾。 9. **注意事项**: - 虽然连续case可以简化代码,但过多的无break case可能导致意外的代码执行路径,...

    c语言if语句实例_C语言if语句和switch语句实例_If..._

    default子句是可选的,当没有任何case匹配时,执行default后的代码。 通过熟练掌握if语句和switch语句,开发者可以编写出灵活且具有决策能力的程序。它们在处理条件判断、逻辑选择和分支控制方面发挥着关键作用。在...

Global site tag (gtag.js) - Google Analytics