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

转自:http://mianshi.fenzhi.com/post/368.html
http://blog.sina.com.cn/s/blog_451f5962010161w2.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”);
                                        continue;
                                }
                                if(i  ==  3)  {
                                        system.out.println(“break”);
                                        i++;  //  otherwise  never
                                                    //  gets  incremented.
                                        break;
                                }
                                if(i  ==  7)  {
                                        system.out.println(“continue  outer”);
                                        i++;  //  otherwise  never
                                                      //  gets  incremented.
                                        continue  outer;
                                }
                                if(i  ==  8)  {
                                        system.out.println(“break  outer”);
                                        break  outer;
                                }

                                for(int  0;  5;  k++)  {
                                        if(k  ==  3)  {
                                                  system.out.println(“continue  inner”);
                                                  continue  inner;
                                        }
                                }
                      }
            }
    }
///:~

结果:
“i  0”,
“continue  inner”,
“i  1”,
“continue  inner”,
“i  2”,
“continue”,
“i  3”,
“break”,
“i  4”,
“continue  inner”,
“i  5”,
“continue  inner”,
“i  6”,
“continue  inner”,
“i  7”,
“continue  outer”,
“i  8”,
“break  outer”




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值