粤嵌Java培训:如何实现类似goto的功能

更新时间: 2017-07-20 14:52:14来源: 粤嵌教育浏览量:4454

goto作为C中一个比较危险的语句,在某些情况,如跳出循环,又是非常好用的。那么在Java中怎么实现类似goto的功能?粤嵌Java培训带大家来了解一下。

goto语句是在源码级上的无条件跳转,这使其招致了不好的声誉。若一个程序总是从一个地方跳到另一个地方,还有什么办法来控制程序的流程,所以在c语言系列里,绝大部分情况都不建议使用goto,不但会使程序代码非常难读懂,甚至有时会产生纠错时较难改正的死循环。通常,使用goto语句被认为是一种拙劣的程序设计风格。

尽管Java的设计者将goto作为保留字,但实际上并没有打算在语言中使用它。在相对复杂的业务逻辑中,我们常常使用到多重循环,在里层循环判断某个条件,一旦条件不符合就直接break,可以break并不能直接跳出所有的循环,这肯定会对性能有影响,还有可能影响业务判断。的方式就是直接跳出所有循循,return到外层。这个类似被广大人民诟病的goto语法。大家众所周知,java是不支持goto语法的,虽然保留了goto为关键字。

当然,也有一些程序员认为反对goto的呼声似乎有些过分(例如,Donald Knuth就曾编著过一篇名为《Structured Programming with goto statements》的文章)。这篇文章说:无限制地使用goto语句确实是导致错误的根源,但在有些情况下,偶尔地使用goto跳出循环还是有益处的。Java设计者同意这种看法,甚至在Java语言中增加了一条带标签的break,以此来支持这种程序设计风格。

Java代码:  

public void showExample() {  

    breakFor: for (int i = 0; i < 100; i++) {  

        for (int j = 0; j < 100; j++) {  

            if (j % 15 == i) {  

                break breakFor;  

            }  

        }  

    }  

}  

 使用任意字符串,如例子中的breakFor,直接break到外层循环。

当然使用continue加标签也是可以的。需要注意的是,在java中,标签起作用的的地方是在迭代语句之前。在java中需要使用标签的理由就是因为有循环嵌套的存在,而且想从多层嵌套中breakcontinue

以上是粤嵌Java培训给大家带来的Java中类似Cgoto跳出循环的方法。




免费预约试听课