Java 之關(guān)鍵字 continue 弥激,break

$break: 只能用在switch語句或者循環(huán)語句當(dāng)中,除此之外不能單獨(dú)應(yīng)用,否則編譯的時(shí) 候會(huì)報(bào)錯(cuò);
$continue: 它的應(yīng)用范圍要比break小一層具钥,有且只能用在循環(huán)語句當(dāng)中,continue跳回到循環(huán)的頂部。

舉個(gè)thingking in java 的例子:
<pre>
public class LabeledFor {public static void main(String[] args) {
int i = 0;outer: // Can't have statements herefor(; true ;) { // infinite loop
inner: // Can't have statements herefor(; i < 10; i++) {
prt("i = " + i);if(i == 2) {
prt("continue");
continue;}
if(i == 3) {prt("break");i++; // Otherwise i never
// gets incremented.break;
}if(i == 7) {
prt("continue outer");i++; // Otherwise i never// gets incremented.
continue outer;}
if(i == 8) {prt("break outer");
break outer;}
for(int k = 0; k < 5; k++) {if(k == 3) {
prt("continue inner");
continue inner;}
}}
}// Can't break or continue// to labels here
}static void prt(String s) {
System.out.println(s);}
}
</pre>
這里用到了在其他例子中已經(jīng)定義的 prt()方法液兽。注意break會(huì)中斷for循環(huán)骂删,而且在<strong>抵達(dá)for循環(huán)的末尾之前,遞增表達(dá)式不會(huì)執(zhí)行</strong>四啰。由于break跳過了遞增表達(dá)式宁玫,所以遞增會(huì)在i==3 的情況下直接執(zhí)行。在 i==7 的情況下柑晒,continue outer 語句也會(huì)到達(dá)循環(huán)頂部欧瘪,而且也會(huì)跳過遞增,所以它也是直接遞增的匙赞。



<pre><strong>備注:</strong> 關(guān)于帶標(biāo)簽的break和continue
Java 中的標(biāo)簽是為循環(huán)設(shè)計(jì)的佛掖,是為了在多重循環(huán)中方便的使用 break 和 coutinue 而設(shè)計(jì)的妖碉。正是由于這個(gè)原因,Java 的標(biāo)簽只能定義在三種循環(huán) (for() {}, do{} while(), while() {}) 的開始位置芥被,否則編譯器會(huì)報(bào)告說找不到標(biāo)簽欧宜。
在循環(huán)前面加上標(biāo)簽,就好像給循環(huán)起了個(gè)名字拴魄。而后在循環(huán)中使用 break 或者 continue 語句的時(shí)候冗茸,就可以帶上這個(gè)標(biāo)簽做為參數(shù),指明跳出 (break) 或者繼續(xù) (continue) 哪一個(gè)循環(huán)匹中,如“break mylabel;”夏漱、“continue mylabel;”。</pre>


如果沒有break outer語句顶捷,就沒有辦法在一個(gè)內(nèi)部循環(huán)里找到出外部循環(huán)的路徑麻蹋。這是由于break本身只能中斷最內(nèi)層的循環(huán)(對(duì)于continue 同樣如此)。當(dāng)然焊切,若想在中斷循環(huán)的同時(shí)退出方法扮授,簡單地用一個(gè)return 即可。下面這個(gè)例子向大家展示了帶標(biāo)簽的break以及continue語句在while循環(huán)中的用法:
<pre>
public class LabeledWhile {public static void main(String[] args) {
int i = 0;outer:while(true) {
prt("Outer while loop");while(true) {
i++;prt("i = " + i);if(i == 1) {
prt("continue");
continue;}
if(i == 3) {prt("continue outer");continue outer;
}if(i == 5) {
prt("break");
break;}
if(i == 7) {prt("break outer");

90

break outer;}
}}
}static void prt(String s) {
System.out.println(s);}
}
</pre>

同樣的規(guī)則亦適用于while:(1) 簡單的一個(gè) 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)荔仁,并移離當(dāng)前標(biāo)簽的末尾。(4) 帶標(biāo)簽的break會(huì)中斷當(dāng)前循環(huán)芽死,并移離由那個(gè)標(biāo)簽指示的循環(huán)的末尾乏梁。這個(gè)方法的輸出結(jié)果是一目了然的:

大家要記住的<strong>重點(diǎn)</strong>是:在Java 里唯一需要用到標(biāo)簽的地方就是擁有嵌套循環(huán),而且想中斷或繼續(xù)多個(gè)嵌套級(jí)別的時(shí)候关贵。在Dijkstra的“Goto有害”論中遇骑,他最反對(duì)的就是標(biāo)簽,而非goto揖曾。隨著標(biāo)簽在一個(gè)程序里數(shù)量的增多落萎,他發(fā)現(xiàn)產(chǎn)生錯(cuò)誤的機(jī)會(huì)也越來越多。標(biāo)簽和goto 使我們難于對(duì)程序作靜態(tài)分析炭剪。這是由于它們?cè)诔绦虻膱?zhí)行流程中引入了許多“怪圈”练链。但幸運(yùn)的是,Java 標(biāo)簽不會(huì)造成這方面的問題奴拦,因?yàn)樗鼈兊幕顒?dòng)場所已被限死媒鼓,不可通過特別的方式到處傳遞程序的控制權(quán)。由此也引出了一個(gè)有趣的問題:通過限制語句的能力,反而能使一項(xiàng)語言特性更加有用绿鸣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓷产,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子枚驻,更是在濱河造成了極大的恐慌濒旦,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件再登,死亡現(xiàn)場離奇詭異尔邓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锉矢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門梯嗽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沽损,你說我怎么就攤上這事灯节。” “怎么了绵估?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵炎疆,是天一觀的道長。 經(jīng)常有香客問我国裳,道長形入,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任缝左,我火速辦了婚禮亿遂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘渺杉。我一直安慰自己蛇数,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布是越。 她就那樣靜靜地躺著耳舅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪英妓。 梳的紋絲不亂的頭發(fā)上挽放,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天绍赛,我揣著相機(jī)與錄音蔓纠,去河邊找鬼。 笑死吗蚌,一個(gè)胖子當(dāng)著我的面吹牛腿倚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蚯妇,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼敷燎,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼暂筝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起硬贯,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤焕襟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后饭豹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸵赖,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年拄衰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了它褪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翘悉,死狀恐怖茫打,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妖混,我是刑警寧澤老赤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站制市,受9級(jí)特大地震影響诗越,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜息堂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一嚷狞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荣堰,春花似錦床未、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至渡八,卻和暖如春啃洋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屎鳍。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工宏娄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逮壁。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓孵坚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卖宠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • goto語句一直被人所詬病巍杈,說它使得代碼結(jié)構(gòu)復(fù)雜化,但是語言設(shè)計(jì)者們還是沒有放棄goto這個(gè)功能強(qiáng)大的語句扛伍。Jav...
    craneyuan閱讀 1,216評(píng)論 0 2
  • 一筷畦、順序結(jié)構(gòu) 代碼在執(zhí)行過程中如果沒有控制語句,代碼就會(huì)一句一句的執(zhí)行下去刺洒,直到結(jié)束汁咏。 二、選擇結(jié)...
    堅(jiān)持也是一種成功閱讀 674評(píng)論 1 5
  • 很多事兒在你沒親身體會(huì)之前作媚,你是不會(huì)明白的攘滩。我說說我媽媽的事情,我媽是一個(gè)非常節(jié)約的人纸泡,到現(xiàn)在快50歲的人了還一直...
    凨馬閱讀 176評(píng)論 0 1
  • 共享單車在天津投放了有一段時(shí)間了。我從起初看好OFO轉(zhuǎn)變到現(xiàn)在更看好摩拜吧兔。把自己的想法分享一下磷仰。 我騎的第一輛車是...
    超懷觀道閱讀 3,509評(píng)論 62 52
  • 不勞而哭 ...
    杞國巖泉閱讀 269評(píng)論 0 0