java中茂附,我們通常熟悉的是通過break和continue兩個(gè)關(guān)鍵字來(lái)控制程序的走向与境,當(dāng)需要程序從一個(gè)地方跳到另一個(gè)地方時(shí)吟榴,就需要要通過標(biāo)簽來(lái)實(shí)現(xiàn)茫蛹,下面通過一個(gè)例子來(lái)講述標(biāo)簽的使用方式操刀。
標(biāo)簽是后面跟著冒號(hào)的標(biāo)識(shí)符,就像下面這樣:
label:
java中婴洼,標(biāo)簽起作用的最好的地方是放在迭代語(yǔ)句之前骨坑,在標(biāo)簽和迭代之間置入任何語(yǔ)句都不好。在迭代前設(shè)置標(biāo)簽的唯一理由是:我們希望在其中嵌套另一個(gè)迭代或者一個(gè)開關(guān)柬采。
將break和continue與標(biāo)簽一起使用欢唾,它們就會(huì)中斷循環(huán),直到標(biāo)簽所在的地方粉捻。
label1:
outer-iteration{
inner-iteration{
break; (1)
continue; (2)
continue label1; (3)
break label; (4)
}
}
在(1)中礁遣,break中斷內(nèi)部迭代,回到外部迭代杀迹。
在(2)中亡脸,continue使執(zhí)行點(diǎn)移回內(nèi)部迭代的起始處。
在(3)中树酪,continue label1 同時(shí)中斷內(nèi)部迭代以及外部迭代浅碾,直接轉(zhuǎn)到label1處,隨后续语,它實(shí)際上是繼續(xù)迭代過程垂谢,但是是從外部迭代開始。
在(4)中疮茄,break label1 也會(huì)中斷所有迭代滥朱,并回到label1處,但并不重新進(jìn)入迭代力试,也就是說徙邻,它是完全終止了兩個(gè)迭代。
public class MainTest {
public static void main(String[] args) {
int i = 0;
outer:
for(;true;){
inner:
for(;i<10;i++){
System.out.println("i="+i);
if(i == 2){
System.out.println("continue");
continue ;
}
if(i == 3){
System.out.println("break");
i++;
break ;
}
if(i == 7){
System.out.println("continue outer");
i++;
continue outer;
}
if(i == 8){
System.out.println("break outer");
break outer;
}
for(int k =0; k<5;k++){
if(k==3){
System.out.println("continue inner");
continue inner;
}
}
}
}
}
}
//##########打印輸出###########:
i=0
continue inner
i=1
continue inner
i=2
continue
i=3
break
i=4
continue inner
i=5
continue inner
i=6
continue inner
i=7
continue outer
i=8
break outer
注意:
break會(huì)中斷for循環(huán)畸裳,而且在抵達(dá)for循環(huán)的末尾之前缰犁,遞增表達(dá)式不會(huì)執(zhí)行。由于break跳過了遞增表達(dá)式怖糊,所以i==3的情況下直接對(duì)i執(zhí)行遞增運(yùn)算帅容。
在i==7的情況下,continue outer語(yǔ)句會(huì)跳到循環(huán)頂部伍伤,而且也會(huì)跳過遞增并徘,所以這里也對(duì)i直接遞增。
下面為帶標(biāo)簽的break和continue在while循環(huán)中的用法:
public class LabelWhile {
public static void main(String[] args) {
int i = 0;
outer:
while(true){
System.out.println("Outer while loop");
while(true){
i++;
System.out.println("i="+i);
if(i==1){
System.out.println("continue");
continue ;
}
if(i == 3){
System.out.println("continue outer");
continue outer;
}
if(i == 5){
System.out.println("break");
break ;
}
if(i==7){
System.out.println("break outer");
break outer;
}
}
}
}
}
//#########打印輸出##########
Outer while loop
i=1
continue
i=2
i=3
continue outer
Outer while loop
i=4
i=5
break
Outer while loop
i=6
i=7
break outer
1)一般的continue會(huì)退回最內(nèi)層循環(huán)的開頭(頂部)扰魂,并繼續(xù)執(zhí)行麦乞。
2)帶標(biāo)簽的continue會(huì)到達(dá)標(biāo)簽的位置蕴茴,并重新進(jìn)入緊接在那個(gè)標(biāo)簽后面的循環(huán)。
3)一般的break會(huì)中斷并跳出當(dāng)前循環(huán)路幸。
4)帶標(biāo)簽的break會(huì)中斷并跳出標(biāo)簽所指的循環(huán)荐开。