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