加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java标签?外,中,内

发布时间:2020-12-15 05:12:23 所属栏目:Java 来源:网络整理
导读:请不要担心循环,但我的问题是关于那些关键字:外部,中间和内部.它们不被声明为实例变量,为什么IDE让代码编译?我在google上做了一些搜索,是这个 java标签吗? Java中的某种关键字?多谢你们. public class LoopTest{public static void main(String[] args){
请不要担心循环,但我的问题是关于那些关键字:外部,中间和内部.它们不被声明为实例变量,为什么IDE让代码编译?我在google上做了一些搜索,是这个 java标签吗? Java中的某种关键字?多谢你们.

public class LoopTest{

public static void main(String[] args){
    int counter = 0;

    outer:
    for(int i = 0; i < 3; i++){
        middle:
        for(int j = 0; j < 3; j++){
            inner:
            for(int k = 0; k < 3; k++){{            
            }
                if(k - j > 0){
                    break middle;
                }
                counter++;
            }
        }
    }
    System.out.println(counter);
}

}

解决方法

Java支持标签.这在 this article from Oracle中描述.

所以,基本上你可以有带标签的循环,你可以使用关键字continue,break等来控制循环的流程.

以下示例说明了如何将循环与break关键字一起使用.当调用break时,它终止标记语句,即someLabel之后的语句

someLabel:
    for (i = 0; i < 100; i++) {
        for (j = 0; j < 100; j++) {
            if (i % 20 == 0) {
                break someLabel;
            }
        }
    }

continue关键字以相同的方式处理标签.当你调用例如继续一些标签;外循环将继续.

作为per this SO-question你也可以做这样的结构:

BlockSegment:
if (conditionIsTrue) {
    doSomeProcessing ();
    if (resultOfProcessingIsFalse()) break BlockSegment;
    otherwiseDoSomeMoreProcessing();
    // These lines get skipped if the break statement
    // above gets executed
}
// This is where you resume execution after the break
anotherStatement();

就个人而言,我绝不会建议使用标签.相反,如果您重新安排代码以便不需要标签(例如将复杂代码分解为较小的函数),我会发现代码更容易理解.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读