1,goto在java中是一个保留字,但是在语言中并未使用它,即:java没有goto
2,java可以完成一些类似于跳转的操作,当然是通过其他关键字。
《thinking in java》中一个很好的例子学习java中的break和continue关键字:
在java中,标签起作用的唯一的地方刚好是在迭代语句之前。“刚好之前”的意思表明,在标签和迭代之间 置入任何语句都不友好。而在迭代之前设置标签的唯一理由是:我们希望在其中嵌套另一个迭代或者一个开关。这是由于break和continue关键词通常只中断当前循环,但若随同标签一起使用,他们就会中断循环,直到标签所在的地方:
label1://标签
outer-iteration{
<span style="white-space:pre"> </span>inner-iteration{
<span style="white-space:pre"> </span>//...
<span style="white-space:pre"> </span>break;//(1)
<span style="white-space:pre"> </span>//...
<span style="white-space:pre"> </span>continue;//(2)
<span style="white-space:pre"> </span>//...
<span style="white-space:pre"> </span>continue lable1;//(3)
<span style="white-space:pre"> </span>//...
<span style="white-space:pre"> </span>break lable1;//(4)
<span style="white-space:pre"> </span>}
}
在(1)中,break中断内部迭代,回到外部迭代。
在(2)中,continue是执行点一会内部迭代的起始处。
在(3)中,continue label1同时中断内部迭代以及外部迭代,直接转到label1处;随后,它实际上是继续迭代过程,但却从外部迭代开是。
在(4)中,break label1也会中断所有迭代,并回到label1处,但并不重新进入迭代。也就是说,它实际是完全终止了两个迭代。