日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中break,continue,標籤實現goto效果(編程思想)

發(fā)布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中break,continue,標籤實現goto效果(編程思想) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

goto
編程語言中一開始就有g(shù)oto關(guān)鍵詞了。事實(shí)上,goto起源於彙編語言的進(jìn)程控制:“若條件A成立,則調(diào)到這裏;否則跳到那裏”。
goto語句時在源碼級別上的跳轉(zhuǎn),這導(dǎo)致了其不好的名譽(yù)。於是goto開始保留使用。
儘管goto仍然是Java中的一個保留字,但在語句中並未使用它:Java沒有g(shù)oto。然而Java也能完成一些類似跳轉(zhuǎn)的操作,這與break和continue這兩個關(guān)鍵詞有關(guān)。它們起始不是一個跳轉(zhuǎn),而是中斷迭代語句的一種方法。之所以把它們納入goto問題中一起討論,是由於它們使用了相同的機(jī)制:標(biāo)籤。
標(biāo)籤是後面跟有冒號的標(biāo)識符,就像下面這樣:
label1:
在Java中,標(biāo)籤其作用的唯一的地方剛好是在迭代語句之前。“剛好之前”的意思表明,在標(biāo)籤和迭代之間置入任何語句都不好。而在迭代之前設(shè)置標(biāo)籤的唯一理由是:我們希望在其中嵌套另一個迭代或者一個開關(guān)。這是由於break和continue關(guān)鍵字通常只能中斷當(dāng)前循環(huán),但若索通標(biāo)籤一起使用,它們就會中斷循環(huán),知道標(biāo)籤所在的地方。
label1:
outer-ieration {
inner-iteration{
//...
break; //(1)
//...
continue;//(2)
//...
continue label1;//(3)
//...
break label1; //(4)
}
}
在(1)中,break中斷內(nèi)部迭代,回到外部迭代。在(2)中,continue使執(zhí)行點(diǎn)移回內(nèi)部迭代的起始處。在(3)中,continue label1同時中斷內(nèi)部迭代以及外部迭代,直接轉(zhuǎn)到label1處;隨後它實(shí)際上時繼續(xù)迭代過程,但卻從外部迭代開始。在(4)中,break label1也會中斷所有迭代,並回到label1處,但並不重新進(jìn)入迭代。也就是説,它實(shí)際上是完全終止了兩個迭代
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會中斷for循環(huán),而且在抵達(dá)for循環(huán)的末尾之前,遞增表達(dá)式不會執(zhí)行。由於break跳過了遞增表達(dá)式,所以在i==3的情況下直接對i執(zhí)行遞增操作。在i==7的情況下,continue outer語句會調(diào)到循環(huán)頂部,而且也會跳過遞增,所以這裏也對i進(jìn)行遞增。
如果沒有break outer語句,就沒辦法從內(nèi)部循環(huán)裏跳出外部循環(huán)。這是由於break本身只能中斷最內(nèi)層的循環(huán)(continue亦是如此)
當(dāng)然,如果想在中斷循環(huán)的同時推出,簡單地使用一個return即可。
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
同樣的規(guī)則亦適用於while:
1、一般的continue會退回最內(nèi)層循環(huán)的開頭,並繼續(xù)執(zhí)行
2、帶標(biāo)籤的continue會到達(dá)標(biāo)籤的位置,並重新進(jìn)入緊接在那個標(biāo)籤後面的循環(huán)
3、一般的break會中斷並跳出當(dāng)前循環(huán)
4、帶比起噢愛按的break會中斷並跳出標(biāo)籤所指的循環(huán)
要注意的要點(diǎn)是:在Java裏需要使用標(biāo)籤的唯一理由就是因?yàn)橛醒h(huán)嵌套存在,而且想從多層嵌套中break或continue。

?

from:?https://hk.saowen.com/a/f30ac1fd93e9a345e31bfe064ceda916f56180221412b0786b7f5467df6af367

總結(jié)

以上是生活随笔為你收集整理的java中break,continue,標籤實現goto效果(編程思想)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。