? Java沒有提供goto語句來控制程序的跳轉(zhuǎn),這樣提高了程序流程控制的可讀性,但是降低了程序控制流程的靈活性,為了彌補(bǔ)這種不足,Java提供了continue 和break來控制循環(huán)結(jié)構(gòu)。除此之外還有return 可以結(jié)束整個(gè)方法,當(dāng)然也就結(jié)束了循環(huán)。
1,使用break結(jié)束循環(huán)
?break 用于完全結(jié)束一個(gè)循環(huán),跳出循環(huán)體。不管哪種循環(huán),一旦在循環(huán)體中遇到break,系統(tǒng)將完全結(jié)束掉該循環(huán)。
程序:

運(yùn)行結(jié)果:

可以看到當(dāng)i等于2時(shí),循環(huán)體內(nèi)遇到break語句,程序結(jié)束了該循環(huán)。
break語句不僅可以結(jié)束掉當(dāng)前所在的循環(huán),還可以結(jié)束掉外層循環(huán)。需要在break后緊跟一個(gè)標(biāo)簽,這個(gè)標(biāo)簽用來標(biāo)識(shí)要結(jié)束的外層循環(huán)。
*Java中的標(biāo)簽就是一個(gè)緊跟著英文冒號(hào)(:)的的標(biāo)識(shí)符。Java的標(biāo)識(shí)符只有放在循環(huán)語句之前才有用。
程序:

運(yùn)行結(jié)果:

當(dāng)j等于1時(shí),程序遇到一個(gè)breal outer;語句,這行代碼將會(huì)導(dǎo)致結(jié)束outer標(biāo)簽指定的循環(huán)。如果把標(biāo)簽放在break語句所在的循環(huán)之前定義,也就失去了標(biāo)簽的意義,因?yàn)閎reak默認(rèn)就是結(jié)束其所在循環(huán)。
2,使用continue忽略本次循環(huán)剩下語句
continue和break的區(qū)別在于,continue只是忽略本次循環(huán)剩下的語句,立即開始下次循環(huán),并不會(huì)終止循環(huán);而break則是完全終止循環(huán)。
程序:

運(yùn)行結(jié)果:

可以看到,當(dāng)i等于1時(shí),程序沒有輸出"after continue"字符串,因?yàn)槌绦驁?zhí)行到continue時(shí),忽略了當(dāng)次循環(huán)中continue后的代碼。如果把continue放在循環(huán)中最后一行是沒有任何意義的,因?yàn)樗雎粤艘黄瞻锥选?/p>
與break一樣,continue后也可以跟一個(gè)標(biāo)簽,用于直接跳過標(biāo)簽所標(biāo)識(shí)的循環(huán)的當(dāng)次循環(huán)的剩下語句,直接開始標(biāo)簽所標(biāo)識(shí)的循環(huán)的下一次循環(huán)。
程序:

運(yùn)行結(jié)果:

結(jié)果表明,每次當(dāng)j等于1的時(shí)候,continue outer;就會(huì)執(zhí)行,后面的語句就會(huì)給忽略,結(jié)束掉外層循環(huán)的本次循環(huán),立即開始下一次,內(nèi)循環(huán)也會(huì)結(jié)束掉。
3,使用return結(jié)束 方法
return不是專門拿來結(jié)束循環(huán)的,return的功能是結(jié)束一個(gè) 方法 。當(dāng)一個(gè)方法執(zhí)行到一個(gè)return語句時(shí),這個(gè)方法將會(huì)給結(jié)束。
Java程序中大部分循環(huán)都被放在方法中執(zhí)行,一旦在循環(huán)體內(nèi)執(zhí)行到renturn語句,return就會(huì)結(jié)束掉該方法,循環(huán)也就隨之結(jié)束了。
程序:

運(yùn)行結(jié)果:

當(dāng)i等于1時(shí),程序?qū)⑼耆Y(jié)束(mian方法結(jié)束時(shí)也就是java程序結(jié)束時(shí))。從結(jié)果看,雖然return不是專門用于循環(huán)結(jié)構(gòu)控制的關(guān)鍵字,但通過renturn;確實(shí)可以結(jié)束一個(gè)循環(huán)。與continue和break不同的是,return是直接結(jié)束整個(gè)方法,不管這個(gè)return處于多少層循環(huán)中。