在本教程中,您將在示例的幫助下了解Java中的控制流語(yǔ)句,使用Java的if和if ... else語(yǔ)句。
在計(jì)算機(jī)編程中,通常希望根據(jù)指定的條件是true 或 false(僅在運(yùn)行時(shí)才知道)執(zhí)行代碼的特定部分。在這種情況下,將使用控制流語(yǔ)句。
在Java中,if-then語(yǔ)句的語(yǔ)法為:
if (expression) { // 語(yǔ)句 }
這是一個(gè)布爾表達(dá)式(expression)。布爾表達(dá)式返回 true 或 false。
如果將表達(dá)式計(jì)算為true,則將if執(zhí)行(大括號(hào)內(nèi)的語(yǔ)句)主體內(nèi)部的語(yǔ)句
如果表達(dá)式的計(jì)算結(jié)果為false,則if主體內(nèi)的語(yǔ)句將被跳過(guò)
class IfStatement { public static void main(String[] args) { int number = 10; //檢查數(shù)字是否大于0 if (number > 0) { System.out.println("這個(gè)數(shù)字是正數(shù)。"); } System.out.println("該語(yǔ)句始終被執(zhí)行。"); } }
輸出:
這個(gè)數(shù)字是正數(shù)。 該語(yǔ)句始終被執(zhí)行。
在上面的示例中,我們有一個(gè)名為number的變量。在此,測(cè)試表達(dá)式檢查number是否大于0(number > 0)。
由于number大于0。因此,測(cè)試表達(dá)式的計(jì)算結(jié)果為true。同時(shí),將執(zhí)行if內(nèi)的代碼。
現(xiàn)在,將的值更改number為負(fù)整數(shù)。假設(shè)為 -5。
int number = -5;
如果我們使用的新值運(yùn)行上述程序number,則將僅輸出為:
該語(yǔ)句始終被執(zhí)行。
在此,number的值小于0。因此,測(cè)試表達(dá)式 number > 0,的計(jì)算結(jié)果為 false。因此,if內(nèi)的語(yǔ)句不會(huì)被執(zhí)行。
要了解有關(guān)測(cè)試表達(dá)式的更多信息,請(qǐng)?jiān)L問(wèn)Java 關(guān)系運(yùn)算符 和Java 邏輯運(yùn)算符。
如果if語(yǔ)句測(cè)試表達(dá)式的計(jì)算結(jié)果為true,則該語(yǔ)句執(zhí)行代碼的特定部分。但是,如果測(cè)試表達(dá)式的計(jì)算結(jié)果為false,則它不會(huì)執(zhí)行任何操作。
在這種情況下,我們可以使用可選 else 代碼塊。如果測(cè)試表達(dá)式的計(jì)算結(jié)果為false,則執(zhí)行塊體內(nèi)的else語(yǔ)句。這在Java中稱為if-then-else語(yǔ)句。
if-then-else語(yǔ)句的語(yǔ)法為:
if (expression) { // 代碼 } else { // 其他代碼 }
在這里,如果測(cè)試表達(dá)式為true,我們的程序?qū)?zhí)行一個(gè)任務(wù)(if塊內(nèi)的任務(wù)),如果測(cè)試表達(dá)式為false,則另一項(xiàng)任務(wù)(else代碼塊內(nèi)的任務(wù))。
class IfElse { public static void main(String[] args) { int number = 10; //檢查數(shù)字是否大于0 if (number > 0) { System.out.println("該數(shù)字為正。"); } else { System.out.println("該數(shù)字不是正數(shù)。"); } System.out.println("This statement is always executed."); } }
輸出:
該數(shù)字為正。 該語(yǔ)句始終被執(zhí)行。
在上面的示例中,我們有一個(gè)名為number的變量。在此,測(cè)試表達(dá)式檢查number是否大于0(number > 0)。
由于number的值為10,因此測(cè)試表達(dá)式的計(jì)算結(jié)果為true。因此,將執(zhí)行if內(nèi)的代碼。
現(xiàn)在,將的值更改number為負(fù)整數(shù)。比方說(shuō) -5。
int number = -5;
如果我們使用的新值運(yùn)行程序number,則輸出為:
該數(shù)字不是正數(shù)。 該語(yǔ)句始終被執(zhí)行。
在這里,number的值是-5。因此,測(cè)試表達(dá)式的計(jì)算結(jié)果為false。所以將執(zhí)行else內(nèi)的代碼。
在Java中,我們有一個(gè)if ... else ... if 階梯語(yǔ)句,可用于在多個(gè)其他代碼塊之間執(zhí)行其中一個(gè)代碼塊。
if (expression1) { // 代碼 } else if(expression2) { // 代碼 } else if (expression3) { // 代碼 } . . else { // 代碼 }
在這里,if語(yǔ)句從上到下執(zhí)行。一旦測(cè)試表達(dá)式為true,就執(zhí)行該if語(yǔ)句主體內(nèi)的代碼。然后,程序的控制跳到if-else-if階梯語(yǔ)句外面。
如果所有測(cè)試表達(dá)式均為false,則執(zhí)行else主體內(nèi)的代碼。
class Ladder { public static void main(String[] args) { int number = 0; //檢查數(shù)字是否大于0 if (number > 0) { System.out.println("這個(gè)數(shù)字是正數(shù)。"); } //檢查數(shù)字是否小于0 else if (number < 0) { System.out.println("該數(shù)字為負(fù)數(shù)。"); } else { System.out.println("數(shù)字是0。"); } } }
輸出:
數(shù)字是0。
在上面的示例中,我們正在檢查變量number是正數(shù),負(fù)數(shù)還是零。在這里,我們有兩個(gè)測(cè)試表達(dá)式:
number > 0 - 檢查 number大于0
number < 0 - 檢查 number小于0
在這里,number的值是0。因此,兩個(gè)測(cè)試表達(dá)式的計(jì)算結(jié)果均為false。因此,執(zhí)行了else主體內(nèi)部的語(yǔ)句。
在Java中,也可以在if..else語(yǔ)句內(nèi)if..else語(yǔ)句。這稱為嵌套if...else語(yǔ)句。
這是一個(gè)查找3個(gè)數(shù)字中,最大的一個(gè)數(shù)字的程序:
class Number { public static void main(String[] args) { //聲明雙精度類型變量 Double n1 = -1.0, n2 = 4.5, n3 = -5.3, largestNumber; //檢查n1是否大于或等于n2 if (n1 >= n2) { //if ... else語(yǔ)句在if塊內(nèi) // 檢查n1是否大于或等于n3 if (n1 >= n3) { largestNumber = n1; } else { largestNumber = n3; } } else { //else塊中的if...else語(yǔ)句 //檢查n2是否大于或等于n3 if (n2 >= n3) { largestNumber = n2; } else { largestNumber = n3; } } System.out.println("最大的數(shù)字是 " + largestNumber); } }
輸出:
最大的數(shù)字是 4.5
注意:在上面的程序中,我們自己分配了變量的值,以簡(jiǎn)化演示過(guò)程。但是,在實(shí)際應(yīng)用中,這些值可能來(lái)自用戶輸入數(shù)據(jù),日志文件,表單提交等。
Java提供了一種稱為三元運(yùn)算符的特殊運(yùn)算符,它是if ... else語(yǔ)句的一種簡(jiǎn)寫(xiě)形式。要了解三元運(yùn)算符,請(qǐng)?jiān)L問(wèn)Java三元運(yùn)算符。