国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

Java編程中的條件判斷之if語(yǔ)句的用法詳解

2019-11-26 14:52:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

if語(yǔ)句使用布爾表達(dá)式或布爾值作為分支條件來(lái)進(jìn)行分支控制,其中if語(yǔ)句有如下三種形式:

  第一種形式:

  if ( logic expression )  {  statements…  }

  第二種形式:

  if (logic expression)  {  statements…  }  else  {  statements…  }

  第三種形式:

  if (logic expression)  {  statements…  }  else if(logic expression)  {  statements…  }  …//可以有零個(gè)或多個(gè)else if語(yǔ)句  else//最后的else語(yǔ)句也可以省略  {  statement  }

  在上面if語(yǔ)言的三種形式中,放在if之后的括號(hào)里的只能是一個(gè)邏輯表達(dá)式,即這個(gè)表達(dá)式的返回值只能是true或false.第二種情形和第三種情形是相通的,如果第三種形式中else if塊不出現(xiàn),則變成了第二種形式。

  上面的條件語(yǔ)句中,if(logic expression)、else if(logic expression)以及else后花括號(hào)括起來(lái)多行代碼被稱(chēng)為代碼塊,一個(gè)代碼塊通常被當(dāng)成一個(gè)整體來(lái)執(zhí)行(除非運(yùn)行過(guò)程中遇到return、break、continue等關(guān)鍵字,或者遇到了異常),因此這個(gè)代碼塊也被稱(chēng)為條件執(zhí)行體。例如如下程序:

  程序清單:codes/04/4-2/TestIf.java

  public class TestIf  {  public static void main(String[] args)  {  int age = 30;  if (age > 20)  //只有當(dāng)age > 20時(shí),下面花括號(hào)括起來(lái)的語(yǔ)句塊才會(huì)執(zhí)行  //花括號(hào)括起來(lái)的語(yǔ)句是一個(gè)整體,要么一起執(zhí)行,要么一起不會(huì)執(zhí)行  {  System.out.println("年齡已經(jīng)大于20歲了");  System.out.println("20歲以上的人應(yīng)該學(xué)會(huì)承擔(dān)責(zé)任…");  }  }  }

  因此,如果if(logic expression)、else if(logic expression)和else后的語(yǔ)句塊只有一行語(yǔ)句時(shí),則可以省略花括號(hào),因?yàn)閱涡姓Z(yǔ)句本身就是一個(gè)整體,無(wú)須花括號(hào)來(lái)把它們定義成一個(gè)整體。下面代碼完全可以正常執(zhí)行(程序清單同上):

  //定義變量a ,并為其賦值  int a = 5;  if (a > 4)  //如果a>4,執(zhí)行下面的執(zhí)行體,只有一行代碼作為代碼塊  System.out.println("a大于4");  else  //否則,執(zhí)行下面的執(zhí)行體,只有一行代碼作為代碼塊  System.out.println("a不大于4");

  通常,我們建議不要省略if、else、else if后執(zhí)行塊的花括號(hào),即使條件執(zhí)行體只有一行代碼,因?yàn)楸A艋ɡㄌ?hào)會(huì)有更好的可讀性,而且保留花括號(hào)會(huì)減少發(fā)生錯(cuò)誤的可能,例如如下代碼,則不可正常執(zhí)行:

  //定義變量b ,并為其賦值  int b = 5;  if (b > 4)  //如果b>4,執(zhí)行下面的執(zhí)行體,只有一行代碼作為代碼塊  System.out.println("b大于4");  else  //否則,執(zhí)行下面的執(zhí)行體  b--;  //對(duì)于下面代碼而言,它已經(jīng)不再是條件執(zhí)行體的一部分,因此總會(huì)執(zhí)行  System.out.println("b不大于4");

  上面代碼中以粗體字標(biāo)識(shí)的代碼行:System.out.println("b不大于4");,將總是會(huì)執(zhí)行,因?yàn)檫@行代碼并不屬于else后的條件執(zhí)行體,else后的條件執(zhí)行體就是b--;這行代碼。

  if、else、else if后條件執(zhí)行體要么是一個(gè)花括號(hào)擴(kuò)起來(lái)的語(yǔ)句塊,則這個(gè)語(yǔ)句塊整體作為條件執(zhí)行體;要么是以分號(hào)為結(jié)束符的一行語(yǔ)句,甚至可能是一個(gè)空語(yǔ)句(空語(yǔ)句是一個(gè)分號(hào))。

  如果if塊后有多條語(yǔ)句作為條件執(zhí)行體,如果省略了這個(gè)條件執(zhí)行體的花括號(hào),則會(huì)引起編譯錯(cuò)誤,看下面代碼(程序清單同上):

  //定義變量c ,并為其賦值  int c = 5;  if (c > 4)  //如果c>4,執(zhí)行下面的執(zhí)行體,將只有c--;一行代碼為條件執(zhí)行體  c--;  //下面是一行普通代碼,不屬于條件執(zhí)行體  System.out.println("c大于4");  //此處的else將沒(méi)有if語(yǔ)句,因此編譯出錯(cuò)  else  //否則,執(zhí)行下面的執(zhí)行體,只有一行代碼作為代碼塊  System.out.println("c不大于4");

  在上面代碼中,因?yàn)閕f后的條件執(zhí)行體省略了花括號(hào),則系統(tǒng)只把c--;一行代碼作為條件執(zhí)行體,當(dāng)c-;語(yǔ)句結(jié)束后,if語(yǔ)句也就結(jié)束了。后面的System.out.println("c大于4");代碼已經(jīng)是一行普通代碼了,不再屬于條件執(zhí)行體,從而導(dǎo)致else語(yǔ)句沒(méi)有if語(yǔ)句,從而引起編譯錯(cuò)誤。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 普定县| 斗六市| 滦南县| 彭泽县| 南漳县| 沐川县| 泗水县| 沁阳市| 无极县| 含山县| 元阳县| 泾源县| 澜沧| 海伦市| 广昌县| 当涂县| 安阳县| 松江区| 博野县| 子长县| 上饶县| 越西县| 兴义市| 区。| 吉安县| 三原县| 黔西| 商都县| 新余市| 沂南县| 盖州市| 江永县| 津市市| 阳江市| 兰考县| 景东| 景东| 改则县| 玉田县| 寿宁县| 辰溪县|