break和continue特殊玩法“标签”
????java標(biāo)簽顧名思義就是在指定的地方打個(gè)標(biāo)記,程序執(zhí)行到某個(gè)特定的地方返回到標(biāo)記處,再執(zhí)行某些操作。
????介紹“標(biāo)簽”先要介紹break和continue關(guān)鍵字。
????break關(guān)鍵字:指停止當(dāng)前代碼塊
????continue關(guān)鍵字:指停止當(dāng)次代碼塊
????為什么說(shuō)“代碼塊”看了下面就知道,break和continue不光可以在for,while,switch等使用。
問(wèn)題1.
當(dāng)內(nèi)側(cè)循環(huán)i等于2時(shí),結(jié)束兩層循環(huán)?
//設(shè)雙層循環(huán),外層i,內(nèi)層j for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if(i==2)break; //結(jié)束兩層循環(huán)System.out.println(j+" "+i);} }?
結(jié)果發(fā)現(xiàn)break是無(wú)法結(jié)束兩層循環(huán),因?yàn)樗荒芙Y(jié)束內(nèi)層循環(huán)。這個(gè)問(wèn)題如果層數(shù)增多為三層可能更加力不從心啊!
//設(shè)雙層循環(huán),1層i,2層j, 3層k for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {for (int k= 0; k < 3; k++) {if(j==2)break; //結(jié)束2層 j 循環(huán)System.out.println(j+" "+i+" "+k);}} }?
問(wèn)題2.
當(dāng)2層循環(huán)j等于2時(shí),停止1層循環(huán)接著運(yùn)行
for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if(i==2)continue; //停止當(dāng)次i的循環(huán)System.out.println(j+" "+i);} }?
?同樣的問(wèn)題也出現(xiàn)在continue上,有時(shí)候算法就是這么“惡心”。同樣的問(wèn)題也可能出現(xiàn)在三層循環(huán)中
for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {for (int k= 0; k < 3; k++) {if(j==2)continue; //停止當(dāng)前j層循環(huán)System.out.println(j+" "+i+" "+k);}} }?
提了兩個(gè)問(wèn)題就開(kāi)始介紹“標(biāo)簽”了。
格式: 標(biāo)簽名 : 代碼塊
介紹:標(biāo)簽名 ? 就是英文單詞隨意寫
????? 代碼塊 ? 這個(gè)地方經(jīng)測(cè)試 只要被 “{ }”包裹的代碼塊都可以使用。
實(shí)驗(yàn):
//代碼1 lable1:for (int i = 0; i < 3; i++) {lable2:for (int j = 0; j < 3; j++) {if(i==2)break lable1; //停止lable1System.out.println(j+" "+i);} }//代碼2 Integer[] a ={1,2,3,4}; Integer[] b ={1,2,3,4}; lable1:for (Integer a1 : a) {lable2:for (Integer a2 : b) {if(a1==1)break lable1; //停止lable1 } }//代碼3 Integer a=1; boolean c=true; boolean d=true; lable1:while (c) {lable2:while (d) {a++;if(a==3)break lable1; //停止lable1 System.out.println(a);} }//代碼4 重點(diǎn)介紹 Integer a= 1; label1:{System.out.println(a++);if(a==2) break label1; //停止lable1 }?
重點(diǎn)介紹代碼4,為什么呢?
因?yàn)檫@個(gè)就是標(biāo)簽的魅力了,你完全可以套很多層。甚至可以編寫一套自己邏輯的循環(huán)體。
Integer a= 1; label1:{lable2:{System.out.println(a++);if(a==2) break label1;} }?
????“標(biāo)簽”的特點(diǎn)就是做標(biāo)記,利用break和continue關(guān)鍵字就可以任意跳轉(zhuǎn)和跳出。從而解決上面兩個(gè)問(wèn)題了。?
????合理的運(yùn)用break和continue配合“標(biāo)簽”的使用,可以寫出很好的算法,解決算法中奇葩的跳出和跳轉(zhuǎn)。但是缺點(diǎn)也是明顯的就是“思路很亂”。不會(huì)的慎用!!!
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/wy51/p/4421940.html
總結(jié)
以上是生活随笔為你收集整理的break和continue特殊玩法“标签”的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 面试题系列——OSI七层模型
- 下一篇: 【好程序员笔记分享】——下拉刷新和上拉加