goto java_Java的“Goto”与标签

goto在Java中是一个保留字,但在语言中并没有用到它;Java没有goto。但是,Java也能完成一些类似于跳转的操作,主要是依靠:标签。

为什么要使用标签

在迭代语句中,我们可以使用break和continue来中断当前循环。但如果出现循环嵌套的情况,使用break和continue只能中断内层循环,无法控制到外层的循环。这时,我们就可以使用标签结合break和continue,中断内层循环,跳转到标签所在的地方。

标签声明

标签的声明很简单,加个冒号就行,就像下面这样:

label1:

标签使用

在Java中,标签起作用的唯一地方是在迭代语句之前,注意“唯一”,也就是说不能在其它地方单独使用,只能结合迭代语句共同使用。

下面这个例子展示了带标签的break以及continue语句在while循环中的用法:

/***@authorzouqingfeng*/

public classGotoLabelTest {public static voidmain(String[] args) {int i = 0;

label1:while (true) {

System.out.println("----------------外层循环开始----------------");while (true) {

i++;

System.out.println("i=" +i);if (i == 1) {

System.out.println("continue");continue;

}if (i == 3) {

System.out.println("continue label1");continuelabel1;

}if (i == 5) {

System.out.println("break");break;

}if (i == 7) {

System.out.println("break label1");breaklabel1;

}

System.out.println("----------------内层循环结束----------------");

}

System.out.println("----------------外层循环结束----------------");

}

System.out.println("End");/*Output:

----------------外层循环开始----------------

i=1

continue

i=2

----------------内层循环结束----------------

i=3

continue label1

----------------外层循环开始----------------

i=4

----------------内层循环结束----------------

i=5

break

----------------外层循环结束----------------

----------------外层循环开始----------------

i=6

----------------内层循环结束----------------

i=7

break label1

End*/}

}

从打印的结果可以看出

当i==1时,执行continue后,没有执行“内层循环结束”打印语句,而是打印了“i=2”,说明continue使执行点回到内层循环起始处,并继续下一次迭代。

当i==3时,执行continue label1后,没有执行“内层循环结束”打印语句,也没有执行“外层循环结束”,而是打印了“外层循环开始”,说明带标签的continue,对内外层循环都起作用,continue label1同时中断内外层循环,直接跳转到label1标签处,随后,从外部循环开始下一次的迭代。

当i==5时,执行break后,没有执行“内层循环结束”,但执行了“外层循环结束”,说明break只中断并跳出内层循环,回到了外层循环中。

当i==7时,执行break label1后,直接打印了“End”,说明带标签的break,对内外层循环都起作用,break label1同时中断内外层循环,直接跳转到label1标签处,但并不重新进入迭代。也就是说,break label1完全终止了两个循环。

总结

一般的continue只会对其所在的循环起作用,退回循环的开头,并继续执行。

带标签的continue会使执行点到达标签的位置,并重新进入紧接在标签后的循环。

一般的break会中断并跳出当前循环。

带标签的break会中断并跳出标签所指的循环。

在Java中,标签起作用的唯一地方是在迭代语句之前。

在Java中,使用标签的唯一理由是有嵌套循环存在,并且想从多层嵌套中break或continue。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值