我用了eclipse反编译了一个java类,反编译之后,发现出现了break MISSING_BLOCK_LABEL_427一直报错,
我想问一下break的各种用法。请高手帮忙解决一下哈~~

解决方案 »

  1.   

    反编译后的 break后是错误的
      

  2.   

    break:跳出最近的一个循环,如果外围还有个循环,则执行外围的循环。
    return:返回到函数入口
      

  3.   

    应该是break之后的东东有错误
    和break没关系吧
      

  4.   

    Break就是中断语句,跳出循环了
      

  5.   

    break本质上就是一个跳转指令, 但反编译程序没能正确处理跳转目标, 只好写成MISSING_BLOCK_LABEL_427,  后面那个427应该是跳转目标的字节码位置
      

  6.   

    break的作用是跳出这个循环(如果这个break或者continue在循环中的if语句里面,不是跳出if语句,而是跳出循环语句),执行这个循环的大括号以后的语句,break在循环语句中是这样,在switch语句用功能也是这样的,而continue是当条件满足的时候不执行这个循环后面的语句,从这个循环的开始重新执行。
    举个例子,通过例子应该更好理解一些。public class BreakAndContinue {
    public static void main(String[] args) {
    for (int i = 0; i < 20; i++) {
    if (i == 14)
    break;
    if (i % 9 == 0)
    continue;
    System.out.println(i + "");
    }
    int i = 0;
    while (true) {
    i++;
    int j = i * 27;
    if (j == 1269)
    break;
    if (i % 10 != 0)
    continue;
    System.out.println(i + "");
    }
    }
    }运行的结果如下: 1 2 3 4 5 6 7 8 10 11 12 13 10 20 30 40
       在上面的for语句中,如果出现14就跳出本次循环,继续下面的while循环,在前面的14个数中(从0开始),只有9%9==0,所以当i==9的时候,continue了一下,就没有输出"9"了。后面的while也是同一个道理。