日期:2014-05-20  浏览次数:20574 次

求大虾帮我解释下switch的一个问题??

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后面的啊,
这是怎么回事求大虾门帮我解释下>

------解决方案--------------------
你按照正规的方法写default 语句 由于他是最后一个所以 执行完他后 switch块就退出了啊,所以在正规的方式里default语句是不用写 break的,
而这题你的default块并没有写break, 所以又接着执行了case 0:
------解决方案--------------------
你不加break的话,他会把每个没有break的分支都走一遍^_^