Java的跳转语句
-
Java没有goto,但 goto仍是 Java 中的一个保留字
-
Java没有goto ,然而,Java也能完成一些类似于跳转的操作,这些 break 和 continue 这两个关键词有关。它们其实不是一个跳转,而是中断迭代语句的一种方法。
-
格式: 标签是后面跟有冒号的标识符,如
lable :
-
在Java中,标签起作用的唯一地方就是刚好是在迭代语句之前。“刚好之前” 的意思表明,在标签和迭代之间置入任何语句都不好。而在迭代之前设置标签的唯一理由就是: 我们希望在其中嵌套另一个迭代 或 一个开关。这个由于 break 和 continue 关键词通常只中断当前循环,但若随标签一起使用,它们就会中断循环,直到标签所在的地方:
lable1 :
outer-iteration { //outer 外面的 iteration 迭代
inner-iteration{ //inner 内部的
//.....
break; //(1)
//.....
continue; //(2)
//.....
continue lable1; //(3)
//.....
break lable1: //(4)
}
}
- 在(1)中,break中断内部迭代,回到外部迭代。
- 在(2)中,continue使执行点移回内部迭代的起始处。
- 在(3)中,continue lable1同时中断内部迭代以外部迭代,直接转到 label1处 ;随后,它实际上是继续迭代过程,但却从外部迭代开始。
- 在(4)中,break label1也会中断所有迭代,并回到 label1 处,但并不重新进入迭代也就是说它完全中止了两个迭代。
- 下列规则同样适用于 while:
- 一般的continue会退回最内层循环的开头 (顶部),并继续执行。
- 带标签的continue会到达标签的位置,并重新进入紧接在那个标签后面的循环
- 一般的break会中断并跳出当前循环。
- 带标签的break会中断并跳出标签所指的循环。
重点: 在Java里需要使用标签的唯一理由就是因为有循环嵌套存在,而且想从多层循环嵌套中break或continue。