java不得不说的秘密-Java中goto跳转执行代码的秘密

createh51个月前 (02-09)技术教程8

总所周知,Java中goto属于保留字,但是你不能说Java没有goto功能的实现。
提出一个问题:当有三层循环的时候,在第三层循环满足某些条件怎么跳出所有循环或者继续开始第一层循环呢?
事实胜于雄辩
上代码,你觉得下面 代码正确吗?

public class Test {
    public static void main(String[] args) {
        lable:for(int i=0;i<3;i++) {
            for (int j=0; j < 3; j++) {
                for(int k=0;k<3;k++) {
                    if (k == 1) {
                        break lable;
                    }
                    System.out.println("i=" + i + ",j=" + j+",k="+k);
                }
            }
        }
    }
}

来看输出结果:



在进行第三层循环的时候,k=1的时候,整个三层循环全部退出了,也许你发现了其中的差一点,我们稍后再说。

继续上菜,不对上代码

public class Test {
    public static void main(String[] args) {
        lable:for(int i=0;i<3;i++) {
            for (int j=0; j < 3; j++) {
                for(int k=0;k<3;k++) {
                    if (k == 1) {
                        continue lable;
                    }
                    System.out.println("i=" + i + ",j=" + j+",k="+k);
                }
            }
        }
    }
}

有过第一个代码片段的经验,我想你不会再想着会报错吧。

来看输出结果:



不要感到吃惊,这不就是Java的goto!不过没有C语言那么强,不过也能实现跳转,在一些场景中还是一个不小的利器

在最基本的Java语法中,breakcontinue只能默认对最近的循环起到作用。
但是,配合上lable标签,即代码中第一层循环前面的lable这个字段,就是lable标签,具体标签起什么名字可以自己决定。
使用很简单,让break或continue针对某一个指定的循环起作用,那么使用label标签添加在这个循环前面,然后使用break或continue加上循环定义的label标签
注意,lable标签和循环之间不能再有其他代码。

是不是由get到了?(^_-)


相关文章

三十分钟入门基础Go(Java小子版)_java小白入门

前言Go语言定义Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态、强类型、编译型语言。Go 语言语法与...

Java与Go语言:实际应用体验的深度剖析

在软件开发领域,Java和Go作为两种极具影响力的编程语言,各自凭借独特的特性和优势,在不同的应用场景中大放异彩。Java凭借其强大的生态系统、丰富的类库和广泛的应用领域,长期占据着企业级开发的重要地...

Java:Java 和Go—你应该知道的8个主要区别

  因为有太多的编程语言可供选择,开发人员经常对哪一种最适合他们的项目感到困惑。因此,今天我们将介绍Java与 Go。Java 和Go都是全球非常流行的语言,它们争夺对服务器端 Web 应用程序的控制...

有一定的c++ go java的编程基础,如何3天学会flutter开发

如果你有多种编程语言的基础,想要在 3 天内学会 Flutter 开发,可以按照以下的计划来进行:第一天:熟悉 Flutter 基础环境搭建首先,安装 Flutter SDK。根据 Flutter 官...

Java,Go和Rust之间的比较_go rust java

这是Java,Go和Rust之间的比较。 这不是基准测试,而是更多输出可执行文件大小,内存使用,CPU使用率,运行时要求之间的比较,当然还有一个小的基准测试,可以每秒获取一些请求,并尝试使 一些数字的...

Dubbo为什么要用Go重写?_为什么使用dubbo

先说两句我常常在散步时思考很多技术上的「为什么问题」,有时一个问题会想很久,直到问题的每一个点都能说服自己时,才算完结。于是想把这些思考记录下来,形成文章,可以当做一个新的系列。这些文章中你可能看不到...