论坛首页 Java企业应用论坛

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

浏览 4626 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-08-10  
OO
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
   发表时间: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 顺序进行,感觉思路清晰多了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics