Java的for语句中break, continue和return的区别

时间:2023-02-15 20:15:55

Given:
22. public void go() {
23. String o = "";
24. z:
25. for(int x = 0; x < 3; x++) {
26. for(int y = 0; y < 2; y++) {
27. if(x==1) break;
28. if(x==2 && y==1) break z;
29. o = o + x + y;
30. }
31. }
32. System.out.println(o);
33. }
What is the result when the go() method is invoked?
A. 00
B. 0001
C. 000120
D. 00012021
E. Compilation fails.
F. An exception is thrown at runtime.
Answer: C

//考察break


转自:http://mianshi.fenzhi.com/post/368.html


break: 使用break 退出循环 可以使用break 语句直接强行退出循环,忽略循环体中任何其他语句和循环条件测试。在循环中遇到break语句时,循环被终止,程序控制在循环后面语句重新开始。例如 如果for 循环被设计为从 0执行到99,然后输出0到99这些数字,但是当i等于10时,break语句终止程序。所以程序只会输出0到10。 在一系列嵌套循环中使用break 语句时,它将仅仅终止最里面循环。
continue: 而continue则停止执行当前的反复,然后退回循环起始和,开始新的反复。continue 用于跳过循环体中的一部分语句,也就是不执行这部分语句
return: return语句用来明确地从一个方法返回。也就是,return 语句使程序控制返回到调用它方法。因此,将它分类为跳转语句。尽管对return 语句详细讨论在第 7 章开始,这里对其作简要地介绍。在一个方法任何时间,return 语句可被用来使正在执行分支程序返回到调用它方法。下面例子说明这一点。下例中,由于是Java 运行系统调用main() ,因此,return语句使程序执行返回到Java 运行系统。 // Demonstrate return. class Return { public static void main(String args[]) { boolean t = true; System.out.println(“Before the return.”); if(t) return; // return to caller System.out.println(“This won’t execute.”); } } 该程序结果如下: Before the return. 正如你看到一样,最后println( ) 语句没有被执行。一旦return语句被执行,程序控制传递到它调用者。 最后一点:在上面程序中,if(t)语句是必要。没有它,Java 编译器将标记“执行不到代码”(unreachable code )错误,因为编译器知道最后println ()语句将永远不会被执行。为阻止这个错误,为这个例子能够执行,在这里使用if语句来“蒙骗”编译器。

其他网摘:

最近在机子上装了jdk1.4.2,装了编辑器eclipse3.0.1,用后感觉eclipse确实很好用,特别是参数提示功能。
网上的java资源也还不少,看了《thinking  in  java》中文版前几章,记点问题与发现在这里:
1.  for循环的一个问题
for(int  i=1,  j=i+10  i<5;  i++  j=i*2)
system.out.println("i="+i+"  j="+j);

运行结果:
i=1  j=11
i=2  j=4
i=3  j=6
i=4  j=8

而改动一点后:
for(int  i=1,  j=i+10;  i<5;  i++){
j=i*2;
system.out.println("i="+i+"  j="+j);
}

结果又为:
i=1  j=2
i=2  j=4
i=3  j=6
i=4  j=8

经网上求助后发现,原因在于:for循环在执行条件测试后,先执行程序部分,再只是步进。

2.  break  与  continue  加标签用法
在java语句里,唯一能放标签的地方是在循环语句前面。而且循环语句跟标签之间不能有任何东西。
label1:
outer-iteration  {
    inner-iteration  {
            //...
            break;  //  1
            //...
            continue;  //  2
            //...
            continue  label1;  //  3
            //...
            break  label1;  //  4
      }
}

案例1会中断内部循环。2会中断内部当前循环,直接跳入下一轮循环。案例3中断内部和外部循环,跳到label1,从外部开头重新开始循环。案例4跳到label1,且不在进入循环。

下面举例:

public  class  labeledfor  {
    static  test  monitor  new  test();
    public  static  void  main(string[]  args)  {
            int  0;
            outer:  //  can't  have  statements  here
            for(;  true  ;)  //  infinite  loop
                      inner:  //  can't  have  statements  here
                      for(;  10;  i++)  {
                                system.out.println("i  i);
                                if(i  ==  2)  {
                                        system.out.println("continue");