当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

<b>java的break和continue语句</b>[Java编程]

赞助商链接



  本文“<b>java的break和continue语句</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在任何循环语句的主体部份,亦可用break和continue掌握循环的流程.此中,break用于强行退出循环,不履行循环中剩余的语句.而continue则终止履行当前的反复,然撤退回循环起始和,开始新的反复.
下面这个程序向大家展示了break和continue在for和while循环中的例子:

//: BreakAndContinue.java
// Demonstrates break and continue keywords

public class BreakAndContinue {
  public static void main(String[] args) {
    for(int i = 0; i < 100; i++) {
      if(i == 74) break; // Out of for loop
      if(i % 9 != 0) continue; // Next iteration
      System.out.println(i);
    }
    int i = 0;
    // An "infinite loop":
    while(true) {
      i++;
      int j = i * 27;
      if(j == 1269) break; // Out of loop
      if(i % 10 != 0) continue; // Top of loop
      System.out.println(i);
    }
  }
} ///:~

在这个for循环中,i的值永久不会到达100.因为一旦i到达74,break语句就会中止循环.普通,只有在不知道中止条件什么时刻满意时,才需象这样利用break.只要i不能被9整除,continue语句会使程序流程返回循环的最开首履行(所以使i值递增).假如可以整除,则将值显示出来.
第二部份向大家揭露了一个“无限循环”的情形.但是,循环内部有一个break语句,可中止循环.除此以外,大家还会看到continue移回循环顶部,同时不完成剩余的内容(所以只有在i值能被9整除时才打印出值).输出后果以下:

0
9
18
27
36
45
54
63
72
10
20
30
40

之所以显示0,是由于0%9等于0.
无限循环的第二种情势是for(;;).编译器将while(true)与for(;;)看做同一回事.所以具体选用哪个取决于自己的编程习惯.

1. 臭名昭著的“goto”
goto关键字很早就在程序计划语言中呈现.事实上,goto是汇编语言的程序掌握构造的始祖:“若条件A,则跳到这里;不然跳到那边”.若阅读由几近全部编译器生成的汇编代码,就会发现程序掌握里包含了很多跳转.但是,goto是在源码的级别跳转的,所以招致了不好的名誉.若程序老是从一个地方跳到另一个地方,还有什么办法能辨认代码的流程呢?随着Edsger Dijkstra闻名的“Goto有害”论的问世,goto便此后失宠.
事实上,真正的问题并不在于利用goto,而在于goto的滥用.并且在一些少见的情形下,goto是组织掌握流程的最佳手段.
固然goto还是Java的一个保存字,但并未在语言中得到正式利用;Java没有goto.但是,在break和continue这两个关键字的身上,我们仍旧能看出一些goto的影子.它并不属于一次跳转,而是中止循环语句的一种办法.之所以把它们归入goto问题中一同谈论,是由于它们利用了相同的机制:标签.
“标签”是背面跟一个冒号的标识符,就象下面这样:
label1:
对Java来说,唯一用到标签的地方是在循环语句之前.进一步说,它实际需求紧靠在循环语句的前方——在标签和循环之间置入任何语句都是不明智的.而在循环之前设置标签的唯一来由是:我们但愿在此中嵌套另一个循环大概一个开关.这是由于break和continue关键字普通只中止当前循环,但假如伴随标签利用,它们就会中止到存在标签的地方.以下所示:

label1:
外部循环{
内部循环{
//...
break; //1
//...
continue; //2
//...
continue label1; //3
//...
break label1; //4
}
}

在条件1中,break中止内部循环,并在外部循环完毕.在条件2中,continue移回内部循环的起始处.但在条件3中,continue label1却同时中止内部循环以及外部循环,并移至label1处.随后,它实际是持续循环,但却从外部循环开始.在条件4中,break label1也会中止全部循环,并回到label1处,但并不重新进入循环.也就是说,它实际是完好中止了两个循环.
下面是for循环的一个例子:

//: LabeledFor.java
// Java’s "labeled for loop"

public class LabeledFor {
  public static void main(String[] args) {
    int i = 0;
    outer: // Can't have statements here
    for(; true ;) { // infinite loop
      inner: // Can't have statements here
      for(; i < 10; i++) {
        prt("i = " + i);
        if(i == 2) {
          prt("continue");
          continue;
        }
        if(i == 3) {
          prt("break");
          i++; // Otherwise i never
               // gets incremented.
          break;
        }
        if(i == 7) {
          prt("continue outer");
          i++; // Otherwise i never
               // gets incremented.
          continue outer;
        }
        if(i == 8) {
          prt("break outer");
          break outer;
        }
        for(int k = 0; k < 5; k++) {
          if(k == 3) {
            prt("continue inner");
            continue inner;
          }
        }
      }
    }
    // Can't break or continue
    // to labels here
  }
  static void prt(String s) {
    System.out.println(s);
  }
} ///:~

这里用到了在其他例子中已经定义的prt()办法.
注意break会中止for循环,并且在到达for循环的末尾之前,递增表达式不会履行.由于break跳过了递增表达式,所以递增会在i==3的情形下直接履行.在i==7的情形下,continue outer语句也会到达循环顶部,并且也会跳过递增,所以它也是直接递增的.
下面是输出后果:

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
假如没有break outer语句,就没有办法在一个内部循环里找到出外部循环的途径.这是由于break本身只能中止最内层的循环(关于continue一样如此).
当然,若想在中止循环的同时退出办法,简单地用一个return便可.
下面这个例子向大家展示了带标签的break以及continue语句在while循环中的用法:

//: LabeledWhile.java
// Java's "labeled while" loop

public class LabeledWhile {
  public static void main(String[] args) {
    int i = 0;
    outer:
    while(true) {
      prt("Outer while loop");
      while(true) {
        i++;
        prt("i = " + i);
        if(i == 1) {
          prt("continue");
          continue;
        }
        if(i == 3) {
          prt("continue outer");
          continue outer;
        }
        if(i == 5) {
          prt("break");
          break;
        }
        if(i == 7) {
          prt("break outer");
          break outer;
        }
      }
    }
  }
  static void prt(String s) {
    System.out.println(s);
  }
} ///:~
一样的法则亦实用于while:
(1) 简单的一个continue会退回最内层循环的开首(顶部),并持续履行.
(2) 带有标签的continue会到达标签的位置,并重新进入紧接在那个标签背面的循环.
(3) break会中止当前循环,并移离当前标签的末尾.
(4) 带标签的break会中止当前循环,并移离由那个标签指导的循环的末尾.
这个办法的输出后果是一目了然的:
Outer while loop
i = 1
continue
i = 2
i = 3
continue outer
Outer while loop
i = 4
i = 5
break
Outer while loop
i = 6
i = 7
break outer
大家要记着的重点是:在Java里唯一需求用到标签的地方就是拥有嵌套循环,并且想中止或持续多个嵌套级别的时刻.
在Dijkstra的“Goto有害”论中,他最反对的就是标签,而非goto.随着标签在一个程序里数目的增添,他发现产生错误的机会也越来越多.标签和goto使我们难于对程序作静态解析.这是由于它们在程序的履行流程中引入了很多“怪圈”.但幸运的是,Java标签不会造成这方面的问题,因为它们的活动场所已被限死,不可通过分外的方法处处传送程序的掌握权.由此也引出了一个风趣的问题:通过限制语句的本领,反而能使一项语言特点越发有效.
  以上是“<b>java的break和continue语句</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .