当前位置: 首页 > 面试题库 >

在Java中使用带标签的中断是一种好习惯吗?

濮阳原
2023-03-14
问题内容

我盯着2001年的一些旧代码,发现以下语句:

   else {
     do {
       int c = XMLDocumentFragmentScannerImpl.this.scanContent();
       if (c == 60) {
         XMLDocumentFragmentScannerImpl.this.fEntityScanner.scanChar();
         XMLDocumentFragmentScannerImpl.this.setScannerState(1);
         break label913;
       }

我以前从未见过,并在这里发现标记为的中断:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

这本质上不像goto吗?使用它甚至是一种好习惯吗?这让我不安。


问题答案:

不,这不像goto,因为您不能“转到”控制流的另一部分。

在您链接的页面上:

break语句终止带标签的语句;它不会将控制流转移到标签上。控制流紧接在标记(终止)的语句之后转移到该语句。

这意味着您只能中断当前正在执行的循环。

考虑以下示例:

first:
for( int i = 0; i < 10; i++) {
  second:
  for(int j = 0; j < 5; j ++ )
  {
    break xxx;
  }
}

third:
for( int a = 0; a < 10; a++) {

}

您可以xxxfirst或替换second(以中断外部或内部循环),因为当您单击该break语句时,两个循环都正在执行,但是替换xxxthird将无法编译



 类似资料:
  • 问题内容: 我知道关键字存在于Java中。但是我不记得看到使用它的代码。可能我正在使用异常,并在本可以使用的地方登录。在Java中使用关键字是否是一种好习惯? 编辑 :我知道断言通常是一个好习惯。我的问题是,更准确地说,如果在Java中断言的BKM是使用关键字而不是使用异常,日志记录和其他技术。 问题答案: 不使用断言的主要原因是因为默认情况下未启用断言。因此,如果您的条件足够重要而需要断言,则不

  • 这在本质上不像那样工作吗?使用它甚至是好的实践吗?这让我很不安。

  • 问题内容: 关于Javadoc的内容不多。(简而言之:它返回字符串的规范表示形式,从而允许使用来比较内部字符串==) 我什么时候可以使用此功能? 是否存在Javadoc中未提及的副作用,即JIT编译器或多或少的优化? 还有其他用途吗? 问题答案: 我何时会使用此函数来支持String.equals() 当你需要速度时,因为可以按引用比较字符串(==比等于快) 是否有Javadoc中未提及的副作用?

  • 问题内容: 该方案。我在写与游戏相关的代码。在该游戏中,(同时也是一个类)具有的列表。有迹象表明,从继承其他类型的项目,例如,或。 显然,拥有我很方便。但是,当我获得玩家物品时,我唯一可以区分哪种物品的方法就是使用关键字。我确信我已经读过,依赖它是不好的做法。 在这种情况下可以使用吗?还是我应该重新考虑我的所有结构? 问题答案: 假设我正在写一些库存代码: 这样可以编译并正常工作。但是它错过了面向

  • 问题内容: 在企业应用程序中使用MS SQL Identity是否是好的做法?在创建业务逻辑以及将数据库从一个迁移到另一个时,难道不是很困难吗? 问题答案: 是的,它们工作得很好,可靠,性能最佳。与不使用身份字段相比,使用身份字段的一大好处是它们可以处理多个调用方尝试保留新ID的所有复杂的并发问题。这看起来似乎是微不足道的代码,但事实并非如此。 以下这些链接提供了一些有关身份字段以及为什么应尽可能

  • 问题内容: 我已经读过一些关于Java 8(不幸的是我不记得在哪里)的目的的信息,我很惊讶作者没有提到在类中使用as作为属性。 由于我在课堂上经常使用可选选项,因此我想知道这是否是一种好习惯。还是我可以只使用普通属性,当未设置普通属性时返回这些属性? 注意: 看来我的问题是基于观点的,但是我觉得在课堂上使用它的感觉真的不是走的路(在阅读了所提到的文章之后)。但是,我喜欢使用它,并且找不到使用它的任