public class Q{
  public static void main(String arg[]){
  int anar[] = new int[]{1,2,3};
  System.out.println(anar[1]);
  int i = 9;
  switch(i){
     default:
       System.out.println("default");
     case 0:
       System.out.println("zero");
       break;
     case 1:
       System.out.println("one");
     case 2:
       System.out.println("two");
  }
  boolean b=true;
  boolean b2 = true;
  if (b==b2){
    System.out.println("So true");
  }
}
}
编译输出了:2 default zero so true 
我就想知道那个zero为什么也输出啊
i不是为9吗?
case里面没有相等的值 因该回直接执行默认的default后面的啊,
这是怎么回事求大虾门帮我解释下>

解决方案 »

  1.   

    你按照正规的方法写default 语句 由于他是最后一个所以 执行完他后 switch块就退出了啊,所以在正规的方式里default语句是不用写 break的,  
      而这题你的default块并没有写break, 所以又接着执行了case 0:
      

  2.   

    default:
           System.out.println("default");
           break;这样也可以,
      

  3.   

    在请教下大虾门 
      case的值 与switch中的i没有相等的 也不会继续执行啊???
      

  4.   

    你不加break的话,他会把每个没有break的分支都走一遍^_^
      

  5.   

    它是不会执行而自动跳过,就像if——else——中没有else一样。