最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java語法基礎(chǔ)之選擇結(jié)構(gòu)的if語句、switch語句詳解

 更新時間:2016年09月08日 11:21:58   作者:生命壹號  
這篇文章主要為大詳細介紹了Java語法基礎(chǔ)之選擇結(jié)構(gòu)的if語句、switch語句,感興趣的小伙伴們可以參考一下

【前言】

流程控制語句:

在一個程序執(zhí)行的過程中,各條語句的執(zhí)行順序?qū)Τ绦虻慕Y(jié)果是有直接影響的。也就是說程序的流程對運行結(jié)果有直接的影響。所以,我們必須清楚每條語句的執(zhí)行流程。而且,很多時候我們要通過控制語句的執(zhí)行順序來實現(xiàn)我們要完成的功能。

流程控制語句分類:

順序結(jié)構(gòu)選擇結(jié)構(gòu):if語句、switch語句循環(huán)結(jié)構(gòu):while語句、for語句

一、順序結(jié)構(gòu):

是程序中最簡單最基本的流程控制,沒有特定的語法結(jié)構(gòu),按照代碼的先后順序,依次執(zhí)行,程序中大多數(shù)的代碼都是這樣執(zhí)行的。

總的來說:寫在前面的先執(zhí)行,寫在后面的后執(zhí)行

順序結(jié)構(gòu)圖:

二、選擇結(jié)構(gòu):

選擇結(jié)構(gòu):也被稱為分支結(jié)構(gòu)。選擇結(jié)構(gòu)有特定的語法規(guī)則,代碼要執(zhí)行具體的邏輯運算進行判斷,邏輯運算的結(jié)果有兩個,所以產(chǎn)生選擇,按照不同的選擇執(zhí)行不同的代碼。

Java語言提供了兩種選擇結(jié)構(gòu)語句:

if語句

switch語句

三、選擇結(jié)構(gòu)的if語句:

if語句有三種格式。下面具體來講解。

1、if語句第一種格式:(適合一種判斷)

復(fù)制代碼 代碼如下:
if(關(guān)系表達式) {語句體;}

執(zhí)行流程:

首先判斷關(guān)系表達式看其結(jié)果是true還是false:如果是true就執(zhí)行語句體;如果是false就不執(zhí)行語句體

其對應(yīng)的流程圖是:

注意事項:

A:關(guān)系表達式無論簡單還是復(fù)雜,結(jié)果必須是boolean類型。

B:if語句控制的語句體如果是一條語句,大括號可以省略;如果是多條語句,就不能省略。建議永遠不要省略。

C:一般來說:有左大括號就沒有分號,有分號就沒有左大括號。

A:if(a==b && a==c){…}的特殊情況:

if(a == b){}寫成了if(a = b){}

這個時候如果是int類型就報錯了。這個時候的意思是把b賦值給a,把a留下來判斷,而a是int類型的所以報錯。

但是如果a,b都是boolean類型就沒有問題。

2、if語句第二種格式:(適合兩種判斷)

if(關(guān)系表達式) {
語句體1;
}else {
語句體2;
}

執(zhí)行流程:

首先判斷關(guān)系表達式看其結(jié)果是true還是false:如果是true就執(zhí)行語句體1;如果是false就執(zhí)行語句體2

其對應(yīng)的流程圖是:

我們前面講解過三元運算符,它根據(jù)比較判斷后,給出的也是兩個結(jié)果,所以,這種情況和if語句的第二種格式很相似,他們在某些情況下應(yīng)該是可以相互轉(zhuǎn)換的。

if語句第二種格式和三元運算符:

三元運算符的操作都可以使用if語句改進,反之不成立。

什么時候不成立呢?當(dāng)if語句控制的語句體是一條輸出語句的時候,就不成立。因為三元運算符是一個運算符,必須要求有一個結(jié)果返回;而輸出語句卻不能作為一個返回結(jié)果。

3、if語句第三種格式:(適合多種判斷)

if語句第三種格式:
if(關(guān)系表達式1) {
       語句體1;
  }else if (關(guān)系表達式2) {
       語句體2;
  }
  ...
  ...
  else {
       語句體n+1;
  }

執(zhí)行流程:

首先判斷關(guān)系表達式1看其結(jié)果是true還是false

如果是true就執(zhí)行語句體1

如果是false就繼續(xù)判斷關(guān)系表達式2看其結(jié)果是true還是false

如果是true就執(zhí)行語句體2

如果是false就繼續(xù)判斷關(guān)系表達式…看其結(jié)果是true還是false

如果沒有任何關(guān)系表達式為true,就執(zhí)行語句體n+1。

其對應(yīng)的流程圖是:

需要注意的是,所有的語句體中,只執(zhí)行一個。

舉例:用if語句的嵌套,獲取三個數(shù)據(jù)中的最大值。代碼如下:

//用if語句實現(xiàn)
    int max1;
    if(a > b) {
      max1 = a;
    }else {
      max1 = b;
    }
    System.out.println("max1:"+max1);

三、選擇結(jié)構(gòu)的switch語句:

switch語句格式:

switch(表達式) {
     case 值1:
      語句體1;
      break;
      case 值2:
      語句體2;
      break;
      ...
      ...
      default:  
      語句體n+1;
      break;
}

解釋:

switch表示這是switch語句

表達式的取值:byte,short,int,char(JDK5以后可以是枚舉,JDK7以后可以是String)(這句話可能出面試題)

case后面跟的是要和表達式進行比較的值

語句體部分可以是一條或多條語句

break表示中斷,結(jié)束的意思,可以結(jié)束switch語句

default語句表示所有情況都不匹配的時候,就執(zhí)行該處的內(nèi)容,和if語句的else相似。

執(zhí)行流程:

首先計算出表達式的值;

其次,和case依次比較,一旦有對應(yīng)的值,就會執(zhí)行相應(yīng)的語句,在執(zhí)行的過程中,遇到break就會結(jié)束。

最后,如果所有的case都和表達式的值不匹配,就會執(zhí)行default語句體部分,然后程序結(jié)束掉。

流程圖:

注意事項:

(1)case后面只能是常量,不能是變量,而且,多個case后面的值不能出現(xiàn)相同的

(2)default可以省略嗎?

可以省略。一般不建議。除非判斷的值是固定的(也就是說所有可能的情況都已經(jīng)列在case中了)

(3)break可以省略嗎?

可以省略,一般不建議。否則結(jié)果可能不是你想要的,會出現(xiàn)一個現(xiàn)象:case穿透。

(4)default的位置一定要在最后嗎?

可以出現(xiàn)在switch語句任意位置。

(5)switch語句的結(jié)束條件:

情況a:遇到break就結(jié)束,而不是遇到default就結(jié)束。

情況b:執(zhí)行到程序的末尾就結(jié)束

2、if和switch各自使用的場景:

在做判斷的時候,我們有兩種選擇,if語句和switch語句,那么,我們到底該如何選擇使用那種語句呢?

if語句使用場景:

針對結(jié)果是boolean類型的判斷

針對一個范圍的判斷

針對幾個常量值的判斷

switch語句使用場景:

針對幾個常量值的判斷

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • CAT分布式實時監(jiān)控系統(tǒng)使用詳解

    CAT分布式實時監(jiān)控系統(tǒng)使用詳解

    這篇文章主要為大家介紹了CAT分布式實時監(jiān)控系統(tǒng)介紹詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Spring事務(wù)框架之TransactionDefinition源碼解析

    Spring事務(wù)框架之TransactionDefinition源碼解析

    這篇文章主要為大家介紹了Spring事務(wù)框架之TransactionDefinition源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • JDK15正式發(fā)布(新增功能預(yù)覽)

    JDK15正式發(fā)布(新增功能預(yù)覽)

    這篇文章主要介紹了JDK15正式發(fā)布,新增功能預(yù)覽,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2020-09-09
  • IntelliJ IDEA導(dǎo)入Gradle項目的方法

    IntelliJ IDEA導(dǎo)入Gradle項目的方法

    這篇文章主要介紹了IntelliJ IDEA導(dǎo)入Gradle項目的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 基于mybatis-plus QueryWrapper 排序的坑

    基于mybatis-plus QueryWrapper 排序的坑

    這篇文章主要介紹了mybatis-plus QueryWrapper 排序的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • ElasticSearch學(xué)習(xí)之文檔API相關(guān)操作

    ElasticSearch學(xué)習(xí)之文檔API相關(guān)操作

    這篇文章主要為大家介紹了ElasticSearch學(xué)習(xí)之文檔API相關(guān)操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Java?17的一些新特性介紹

    Java?17的一些新特性介紹

    這篇文章主要介紹了Java?17的一些新特性介紹,Java添加了許多Java開發(fā)人員渴望的特性和改進,下文就來學(xué)習(xí)一下這些特性吧,需要的朋友可以參考一下
    2022-04-04
  • springboot使用定時器@Scheduled不管用的解決

    springboot使用定時器@Scheduled不管用的解決

    這篇文章主要介紹了springboot使用定時器@Scheduled不管用的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java+mysql實現(xiàn)學(xué)籍管理系統(tǒng)

    Java+mysql實現(xiàn)學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java+mysql實現(xiàn)學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 解決mybatis?update并非所有字段需要更新問題

    解決mybatis?update并非所有字段需要更新問題

    這篇文章主要介紹了解決mybatis?update并非所有字段需要更新問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論

桐乡市| 武汉市| 邹城市| 汪清县| 长乐市| 石狮市| 浦北县| 钟山县| 锡林郭勒盟| 磴口县| 车险| 泰来县| 金秀| 平湖市| 玉田县| 元谋县| 江门市| 曲阜市| 清苑县| 正安县| 南昌市| 清河县| 保靖县| 梅河口市| 安多县| 武邑县| 天峨县| 兰西县| 云南省| 浦江县| 麟游县| 滁州市| 班戈县| 通州市| 仁化县| 治多县| 濮阳县| 尖扎县| 托克托县| 京山县| 东丽区|