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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java中的goto实现

發(fā)布時(shí)間:2025/3/21 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中的goto实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java語言中g(shù)oto是保留關(guān)鍵字,沒有g(shù)oto語句,也沒有任何使用goto關(guān)鍵字的地方。

?

Java中也可在特定情況下,通過特定的手段,來實(shí)現(xiàn)goto的功能。顯然Java不愿意開發(fā)者隨意跳轉(zhuǎn)程序。下面解釋兩個(gè)特定:

特定情況:只有在循環(huán)體內(nèi),比如for、while語句(含do...while語句)中。

特定手段:語句標(biāo)簽和循環(huán)控制關(guān)鍵字break、continue,語法格式是:break/continue 語句標(biāo)簽。

?

一、break、continue和語句標(biāo)簽

?

1、語句標(biāo)簽

語句標(biāo)簽的語法是:標(biāo)簽名:

語句標(biāo)簽可以定義在方法體內(nèi)的最后一條語句之前即可。但是語句標(biāo)簽實(shí)際使用的機(jī)會(huì)是與break和continue結(jié)合使用的,而break和continue是和循環(huán)語句結(jié)合使用的,因此實(shí)際上語句標(biāo)簽的使用也是和循環(huán)緊密結(jié)合的。

?

語句標(biāo)簽在被使用的情況,只能定義在循環(huán)迭代語句之前,否則編譯出錯(cuò)!

?

因此,有意義、可使用的標(biāo)簽含義是:指定循環(huán)語句的標(biāo)識(shí)!

?

2、break、continue語句單獨(dú)使用

單獨(dú)使用情況下:break語句作用是結(jié)束當(dāng)前的循環(huán)迭代體,進(jìn)而執(zhí)行剩余的語句。

continue語句的作用是結(jié)束本次迭代過程,繼續(xù)執(zhí)行下一輪迭代。

?

3、break、continue語句結(jié)合語句標(biāo)簽的使用

為什么需要語句標(biāo)簽?zāi)?#xff1f;

原因是因?yàn)槌绦蚩赡苡醒h(huán)的嵌套,當(dāng)多層循環(huán)嵌套時(shí)候,有時(shí)候需要一次跳出多級(jí)循環(huán),這種情況下就需要結(jié)合語句標(biāo)簽才能實(shí)現(xiàn)此功能了。

?

帶標(biāo)簽使用情況下:break中斷并跳出標(biāo)簽所指定循環(huán),continue跳轉(zhuǎn)到標(biāo)簽指定的循環(huán)處,并繼續(xù)執(zhí)行該標(biāo)簽所指定的循環(huán)。

?

為了說明情況,看看下面的例子:

import?java.util.Random;?

/**?
* 語句標(biāo)簽測試?
*?
* @author leizhimin 2009-7-16 11:43:08?
*/
?
public?class?TestLable {?
????????public?static?void?main(String[] args) {?
????????????????outer:?
????????????????for?(int?i = 0; i < 10; i++) {?
????????????????????????System.out.println("\nouter_loop:"?+ i);?
????????????????????????inner:?
????????????????????????for?(int?k = 0; i < 10; k++) {?
????????????????????????????????System.out.print(k +?" ");?
????????????????????????????????int?x =?new?Random().nextInt(10);?
????????????????????????????????if?(x > 7) {?
????????????????????????????????????????System.out.print(" >>x == "?+ x +?",結(jié)束inner循環(huán),繼續(xù)迭代執(zhí)行outer循環(huán)了!");?
????????????????????????????????????????continue?outer;?
????????????????????????????????}?
????????????????????????????????if?(x == 1) {?
????????????????????????????????????????System.out.print(" >>x == 1,跳出并結(jié)束整個(gè)outer和inner循環(huán)!");?
????????????????????????????????????????break?outer;?
????????????????????????????????}?
????????????????????????}?
????????????????}?
????????????????System.out.println("------>>>所有循環(huán)執(zhí)行完畢!");?
????????}?
}

?

執(zhí)行結(jié)果:


outer_loop:0?
0 1 2 3 4 5 6 7 8 9????>>x == 8,結(jié)束inner循環(huán),繼續(xù)迭代執(zhí)行outer循環(huán)了!?
outer_loop:1?
0 1 2 3 4 5????>>x == 9,結(jié)束inner循環(huán),繼續(xù)迭代執(zhí)行outer循環(huán)了!?
outer_loop:2?
0 1 2 3 4 5 6 7 8 9????>>x == 8,結(jié)束inner循環(huán),繼續(xù)迭代執(zhí)行outer循環(huán)了!?
outer_loop:3?
0 1 2 3 4????>>x == 9,結(jié)束inner循環(huán),繼續(xù)迭代執(zhí)行outer循環(huán)了!?
outer_loop:4?
0 1 2 3 4 5 6 7 8 9 10????>>x == 8,結(jié)束inner循環(huán),繼續(xù)迭代執(zhí)行outer循環(huán)了!?
outer_loop:5?
0????>>x == 1,跳出并結(jié)束整個(gè)outer和inner循環(huán)!------>>>所有循環(huán)執(zhí)行完畢!?

Process finished with exit code 0

?

這個(gè)執(zhí)行結(jié)果是隨機(jī)的。

?

下面給個(gè)圖看看:

?

二、switch語句

?

switch語句是一個(gè)條件選擇語句,這個(gè)語句有“goto”的味道,但是限制也很多,因此,實(shí)際中使用較少。

?

switch語句的結(jié)構(gòu)如下:

switch(intvar){?
????????case?intval: 語句代碼;break;?
????????case?intval: 語句代碼;break;?
????????case?intval: 語句代碼;break;?
????????case?intval: 語句代碼;break;?
????????default:?
???????????????? 語句代碼;?
}

?

switch(intval){...}語句中,小括號(hào)中intvar是一個(gè)整數(shù)條件因子變量,這個(gè)變量只能為:byte、char、short、int和enum(枚舉類型)幾種類型,本質(zhì)上都是整形數(shù)字。intval是匹配的條件因子值,當(dāng)匹配時(shí),執(zhí)行其下的語句。其中所有的break語句都是可選的。當(dāng)執(zhí)行了break語句后,就跳出整個(gè)switch語句,否則,還會(huì)繼續(xù)往下匹配別的條件。當(dāng)intvar不能匹配所有的給定條件值時(shí)候,就執(zhí)行default語句,如果沒有default語句,則跳出switch語句。

?

switch語句的條件因子變量只能作為整型數(shù)字或者字符型、枚舉類型,這個(gè)限制太嚴(yán)格了,使得switch語句的實(shí)際用途不是很大。

?

下面是一個(gè)漢語金額數(shù)字轉(zhuǎn)換程序:

/**?
* 漢語金額數(shù)字轉(zhuǎn)換程序?
*?
* @author leizhimin 2009-7-16 13:28:05?
*/
?
public?class?TestSwitch {?

????????/**?
???????? * 數(shù)字轉(zhuǎn)換為漢語金額數(shù)字?
???????? *?
???????? * @param num 數(shù)字?
???????? * @return 漢語金額數(shù)字?
???????? */
?
????????public?static?String genCnNum(Long num) {?
????????????????StringBuffer sb =?new?StringBuffer();?
????????????????String snum = String.valueOf(num);?
????????????????for?(char?c : snum.toCharArray()) {?
????????????????????????sb.append(num2Cn(c));?
????????????????}?
????????????????return?sb.toString();?
????????}?

????????/**?
???????? * 字符數(shù)字轉(zhuǎn)換為漢語金額數(shù)字?
???????? *?
???????? * @param c 字符數(shù)字?
???????? * @return 漢語金額數(shù)字?
???????? */
?
????????private?static?String num2Cn(char?c) {?
????????????????String res =?null;?
????????????????switch?(c) {?
????????????????????????case?'0':?
????????????????????????????????res =?"零";?
????????????????????????????????break;?
????????????????????????case?'1':?
????????????????????????????????res =?"壹";?
????????????????????????????????break;?
????????????????????????case?'2':?
????????????????????????????????res =?"貮";?
????????????????????????????????break;?
????????????????????????case?'3':?
????????????????????????????????res =?"叁";?
????????????????????????????????break;?
????????????????????????case?'4':?
????????????????????????????????res =?"肆";?
????????????????????????????????break;?
????????????????????????case?'5':?
????????????????????????????????res =?"伍";?
????????????????????????????????break;?
????????????????????????case?'6':?
????????????????????????????????res =?"陸";?
????????????????????????????????break;?
????????????????????????case?'7':?
????????????????????????????????res =?"柒";?
????????????????????????????????break;?
????????????????????????case?'8':?
????????????????????????????????res =?"捌";?
????????????????????????????????break;?
????????????????????????case?'9':?
????????????????????????????????res =?"玖";?
????????????????????????????????break;?
????????????????????????default:?
????????????????????????????????System.out.println("您的輸入有誤,請重試!");?
????????????????}?
????????????????return?res;?
????????}?

????????public?static?void?main(String[] args) {?
????????????????System.out.println(genCnNum(4523586022L));?
????????}?
}

?

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

肆伍貮叁伍捌陸零貮貮?

Process finished with exit code 0

from:http://blog.51cto.com/lavasoft/178997?

總結(jié)

以上是生活随笔為你收集整理的Java中的goto实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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