亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java的“Goto”與標(biāo)簽及使用詳解

 更新時(shí)間:2018年10月31日 14:49:55   投稿:mrr  
goto在Java中是一個(gè)保留字,但在語言中并沒有用到它;Java沒有g(shù)oto。接下來通過本文給大家介紹Java的“Goto”與標(biāo)簽,感興趣的朋友跟隨小編一起看看吧

goto在Java中是一個(gè)保留字,但在語言中并沒有用到它;Java沒有g(shù)oto。但是,Java也能完成一些類似于跳轉(zhuǎn)的操作,主要是依靠:標(biāo)簽。

為什么要使用標(biāo)簽

在迭代語句中,我們可以使用break和continue來中斷當(dāng)前循環(huán)。但如果出現(xiàn)循環(huán)嵌套的情況,使用break和continue只能中斷內(nèi)層循環(huán),無法控制到外層的循環(huán)。這時(shí),我們就可以使用標(biāo)簽結(jié)合break和continue,中斷內(nèi)層循環(huán),跳轉(zhuǎn)到標(biāo)簽所在的地方。

標(biāo)簽聲明

標(biāo)簽的聲明很簡(jiǎn)單,加個(gè)冒號(hào)就行,就像下面這樣:

label1:

標(biāo)簽使用

在Java中,標(biāo)簽起作用的唯一地方是在迭代語句之前,注意“唯一”,也就是說不能在其它地方單獨(dú)使用,只能結(jié)合迭代語句共同使用。

下面這個(gè)例子展示了帶標(biāo)簽的break以及continue語句在while循環(huán)中的用法:

/**
 * @author zouqingfeng
 */
public class GotoLabelTest {
  public static void main(String[] args) {
    int i = 0;
    label1: while (true) {
      System.out.println("----------------外層循環(huán)開始----------------");
      while (true) {
        i++;
        System.out.println("i=" + i);
        if (i == 1) {
          System.out.println("continue");
          continue;
        }
        if (i == 3) {
          System.out.println("continue label1");
          continue label1;
        }
        if (i == 5) {
          System.out.println("break");
          break;
        }
        if (i == 7) {
          System.out.println("break label1");
          break label1;
        }
        System.out.println("----------------內(nèi)層循環(huán)結(jié)束----------------");
      }
      System.out.println("----------------外層循環(huán)結(jié)束----------------");
    }
    System.out.println("End");
    /* Output:
      ----------------外層循環(huán)開始----------------
      i=1
      continue
      i=2
      ----------------內(nèi)層循環(huán)結(jié)束----------------
      i=3
      continue label1
      ----------------外層循環(huán)開始----------------
      i=4
      ----------------內(nèi)層循環(huán)結(jié)束----------------
      i=5
      break
      ----------------外層循環(huán)結(jié)束----------------
      ----------------外層循環(huán)開始----------------
      i=6
      ----------------內(nèi)層循環(huán)結(jié)束----------------
      i=7
      break label1
      End
     */    
  }
}

 從打印的結(jié)果可以看出

當(dāng)i==1時(shí),執(zhí)行continue后,沒有執(zhí)行“內(nèi)層循環(huán)結(jié)束”打印語句,而是打印了“i=2”,說明continue使執(zhí)行點(diǎn)回到內(nèi)層循環(huán)起始處,并繼續(xù)下一次迭代。

當(dāng)i==3時(shí),執(zhí)行continue label1后,沒有執(zhí)行“內(nèi)層循環(huán)結(jié)束”打印語句,也沒有執(zhí)行“外層循環(huán)結(jié)束”,而是打印了“外層循環(huán)開始”,說明帶標(biāo)簽的continue,對(duì)內(nèi)外層循環(huán)都起作用,continue label1同時(shí)中斷內(nèi)外層循環(huán),直接跳轉(zhuǎn)到label1標(biāo)簽處,隨后,從外部循環(huán)開始下一次的迭代。

當(dāng)i==5時(shí),執(zhí)行break后,沒有執(zhí)行“內(nèi)層循環(huán)結(jié)束”,但執(zhí)行了“外層循環(huán)結(jié)束”,說明break只中斷并跳出內(nèi)層循環(huán),回到了外層循環(huán)中。

當(dāng)i==7時(shí),執(zhí)行break label1后,直接打印了“End”,說明帶標(biāo)簽的break,對(duì)內(nèi)外層循環(huán)都起作用,break label1同時(shí)中斷內(nèi)外層循環(huán),直接跳轉(zhuǎn)到label1標(biāo)簽處,但并不重新進(jìn)入迭代。也就是說,break label1完全終止了兩個(gè)循環(huán)。

總結(jié)

1.一般的continue只會(huì)對(duì)其所在的循環(huán)起作用,退回循環(huán)的開頭,并繼續(xù)執(zhí)行。
2.帶標(biāo)簽的continue會(huì)使執(zhí)行點(diǎn)到達(dá)標(biāo)簽的位置,并重新進(jìn)入緊接在標(biāo)簽后的循環(huán)。
3.一般的break會(huì)中斷并跳出當(dāng)前循環(huán)。
4.帶標(biāo)簽的break會(huì)中斷并跳出標(biāo)簽所指的循環(huán)。
5.在Java中,標(biāo)簽起作用的唯一地方是在迭代語句之前。
6.在Java中,使用標(biāo)簽的唯一理由是有嵌套循環(huán)存在,并且想從多層嵌套中break或continue。

相關(guān)文章

  • Nacos?Discovery服務(wù)治理解決方案

    Nacos?Discovery服務(wù)治理解決方案

    DiscoveryClient是專門負(fù)責(zé)服務(wù)注冊(cè)和發(fā)現(xiàn)的,我們可以通過它獲取到注冊(cè)到注冊(cè)中心的所有服務(wù),這篇文章主要介紹了Nacos?Discovery服務(wù)治理,需要的朋友可以參考下
    2022-11-11
  • Java多線程中sleep和wait區(qū)別

    Java多線程中sleep和wait區(qū)別

    本文主要介紹了Java多線程中sleep和wait區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Maven本地jar引用的實(shí)現(xiàn)方法

    Maven本地jar引用的實(shí)現(xiàn)方法

    這篇文章主要介紹了Maven本地jar引用的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • 解決Mybatis-plus和pagehelper依賴沖突的方法示例

    解決Mybatis-plus和pagehelper依賴沖突的方法示例

    這篇文章主要介紹了解決Mybatis-plus和pagehelper依賴沖突的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • java+SpringBoot設(shè)計(jì)實(shí)現(xiàn)評(píng)教系統(tǒng)

    java+SpringBoot設(shè)計(jì)實(shí)現(xiàn)評(píng)教系統(tǒng)

    這篇文章主要介紹了用過Java SpringBoot實(shí)現(xiàn)一個(gè)簡(jiǎn)單的評(píng)價(jià)系統(tǒng),可以做到學(xué)生管理、教師管理、評(píng)教管理、指標(biāo)管理、課程管理等。感興趣的可以了解一下
    2021-12-12
  • Atomikos + MybatisPlus解決多數(shù)據(jù)源事務(wù)一致性問題解決

    Atomikos + MybatisPlus解決多數(shù)據(jù)源事務(wù)一致性問題解決

    在實(shí)際項(xiàng)目的開發(fā)過程中,我們經(jīng)常會(huì)遇到在同一個(gè)項(xiàng)目或微服務(wù)中牽涉到使用兩個(gè)或多個(gè)數(shù)據(jù)源的,本文主要介紹了Atomikos + MybatisPlus解決多數(shù)據(jù)源事務(wù)一致性問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案

    idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案

    這篇文章主要介紹了idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 一款不可錯(cuò)過的Java應(yīng)用診斷利器Arthas

    一款不可錯(cuò)過的Java應(yīng)用診斷利器Arthas

    Arthas是一款由阿里巴巴開源的Java應(yīng)用診斷利器,它可以幫助開發(fā)人員在運(yùn)行時(shí)對(duì)Java應(yīng)用進(jìn)行調(diào)試和診斷,解決線上問題,本文將簡(jiǎn)單的描述一下該工具的用法和常用命令,以勾起大家對(duì)此工具應(yīng)用的興趣
    2023-06-06
  • 使用arthas命令redefine實(shí)現(xiàn)Java熱更新(推薦)

    使用arthas命令redefine實(shí)現(xiàn)Java熱更新(推薦)

    今天分享一個(gè)非常重要的命令 redefine ,主要作用是加載外部的 .class 文件,用來替換 JVM 已經(jīng)加載的類,總結(jié)起來就是實(shí)現(xiàn)了 Java 的熱更新,感興趣的朋友跟隨小編一起看看吧
    2020-05-05
  • 詳解SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源

    詳解SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源

    這篇文章主要為大家介紹了SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09

最新評(píng)論