1. if基本語(yǔ)法
在Java代碼中,如果我們要根據(jù)某個(gè)條件來(lái)決定是否執(zhí)行一段代碼,就可以考慮使用if語(yǔ)句。if語(yǔ)句的基本語(yǔ)法是:
if(條件表達(dá)式){
//滿足條件時(shí)要執(zhí)行的語(yǔ)句
}
在上面的語(yǔ)法中,會(huì)根據(jù)if(條件表達(dá)式)里的計(jì)算結(jié)果(true或者false),由JVM決定是否執(zhí)行{}里的代碼塊。如果為true,就執(zhí)行,否則就不執(zhí)行。
2. if的單分支語(yǔ)句
首先我們通過(guò)一個(gè)簡(jiǎn)單的需求,來(lái)學(xué)習(xí)if的單分支語(yǔ)句。所謂的單分支語(yǔ)句,就是說(shuō)只有一種判斷情況,條件為真就執(zhí)行,否則就不執(zhí)行。比如這個(gè)需求:“如果你年滿18歲,就可以攢勁的節(jié)目”。
public class Demo01 {
public static void main(String[] args) {
// if語(yǔ)句
//案例1:如果年齡大于等于18歲,就可以看攢勁的節(jié)目了
System.out.println("請(qǐng)輸入你的年齡");
//獲取Scanner對(duì)象
Scanner sc=new Scanner(System.in);
//獲取年齡
int age = sc.nextInt();
//如果語(yǔ)句塊{}里面只有一條執(zhí)行語(yǔ)句,{}可以省略,但建議保留。
if(age >= 18){
System.out.println("本節(jié)目只對(duì)成年人開(kāi)放,未成年人請(qǐng)?jiān)诟改概阃掠^看,節(jié)目正在緩沖......");
}
//案例2:如果身高大于180,且體重小于180,就可以當(dāng)模特
System.out.println("請(qǐng)輸入你的身高");
int height = sc.nextInt();
System.out.println("請(qǐng)輸入你的體重");
int weight = sc.nextInt();
//條件表達(dá)式中,可以結(jié)合之前學(xué)習(xí)過(guò)的邏輯運(yùn)算符
//采用短路與&&,提高效率
if(height > 180 && weight < 180){
System.out.println("恭喜你,可以當(dāng)模特了");
}
}
}
另外如果{}語(yǔ)句塊里面只有一條執(zhí)行語(yǔ)句,{}可以省略,但建議保留。因?yàn)槿绻覀儾捎每s進(jìn)的格式,很容易把后面的語(yǔ)句都看成是if語(yǔ)句的執(zhí)行塊,所以不推薦忽略花括號(hào)的寫法。
單分支語(yǔ)句應(yīng)對(duì)的情況是很簡(jiǎn)單的,在實(shí)際開(kāi)發(fā)中可能會(huì)很復(fù)雜,這就需要使用多分支語(yǔ)句來(lái)進(jìn)行處理。
3. if的多分支語(yǔ)句
3.1 if...else結(jié)構(gòu)
if...else...結(jié)構(gòu)會(huì)根據(jù)條件表達(dá)式的結(jié)果進(jìn)行判斷,當(dāng)表達(dá)式的結(jié)果為true,則執(zhí)行語(yǔ)句塊A;否則執(zhí)行else后面的語(yǔ)句塊B。基本語(yǔ)法結(jié)構(gòu)如下:
if(邏輯條件){
//滿足邏輯條件執(zhí)行的代碼
}else{
//不滿足邏輯條件執(zhí)行的代碼
}
案例如下:
public class Demo01 {
public static void main(String[] args) {
// if多分支語(yǔ)句
Scanner sc=new Scanner(System.in);
//案例:如果用戶名為admin、密碼為123456,就跳轉(zhuǎn)到首頁(yè),否則跳轉(zhuǎn)到登錄頁(yè)面
System.out.println("請(qǐng)輸入用戶名");
String username = sc.next();
System.out.println("請(qǐng)輸入密碼");
String password = sc.next();
//equals()比較方法
if("admin".equals(username) && "123456".equals(password)){
System.out.println("跳轉(zhuǎn)首頁(yè)");
}else{
System.out.println("跳轉(zhuǎn)登錄頁(yè)面");
}
}
}
我們要注意,在java中,"=="比較的是兩個(gè)對(duì)象的內(nèi)存地址是否相同,String類中的equals()方法比較的是內(nèi)容是否相同。如果是基本數(shù)據(jù)類型,我們可以使用==進(jìn)行比較;而對(duì)于String字符串,一般是使用equals()方法進(jìn)行比較。
另外我們?cè)谑褂胑quals()方法進(jìn)行比較時(shí),要采用類似"admin".equals(username)的寫法,而不要采用username.equals("admin")的寫法。因?yàn)閡sername對(duì)象的值有可能為null,這樣就可能會(huì)產(chǎn)生NullPointerException異常。
3.2 if多分支
if多分支就是可以利用多個(gè)if ... else if ...else...進(jìn)行串聯(lián)。多分支可以根據(jù)多個(gè)條件表達(dá)式的結(jié)果進(jìn)行判斷:
●如果條件表達(dá)式1的結(jié)果為true,則執(zhí)行語(yǔ)句塊1;否則去判斷條件表達(dá)式2;
●如果條件表達(dá)式2的結(jié)果為true,則執(zhí)行語(yǔ)句塊2,否則去判斷條件表達(dá)式3;
● ....
●如果所有的條件表達(dá)式結(jié)果都為false,則執(zhí)行語(yǔ)句塊N+1;
●else是可選的,根據(jù)需要可以省略。
if多分支的語(yǔ)法結(jié)構(gòu)如下:
if(邏輯條件1){
//滿足邏輯條件1執(zhí)行的代碼
}else if(邏輯條件2){
//隱藏條件(不滿足條件1) 滿足邏輯條件2執(zhí)行的代碼
}else if(邏輯條件3){
//隱藏條件(不滿足條件1、2) 滿足邏輯條件3執(zhí)行的代碼
}else{
//不滿足以上所有邏輯條件執(zhí)行的代碼
}
需求案例:請(qǐng)你根據(jù)手上的資金選擇購(gòu)買的手機(jī)品牌。如果你手里的錢大于10000,就買個(gè)蘋果;如果大于7000, 就買個(gè)華為;如果大于5000,就買個(gè)小米;如果大于3000,就買個(gè)諾基亞;否則,乖乖地去打公共電話。
public class Demo01 {
public static void main(String[] args) {
// if多分支語(yǔ)句
Scanner sc=new Scanner(System.in);
//請(qǐng)你根據(jù)手上的資金選擇購(gòu)買的手機(jī)品牌。如果你手里的錢大于10000,就買個(gè)蘋果;
//如果大于7000, 就買個(gè)華為;如果大于5000,就買個(gè)小米;如果大于3000,就買個(gè)諾基亞;
//否則,乖乖地去打公共電話。
System.out.println("請(qǐng)輸入余額");
int money = sc.nextInt();
if(money > 10000){
System.out.println("蘋果手機(jī)");
}else if(money > 7000){ //money <= 10000
System.out.println("華為手機(jī)");
}else if(money > 5000){
System.out.println("小米手機(jī)");
}else if(money > 3000){
System.out.println("諾基亞手機(jī)");
}else{
System.out.println("打公共電話");
}
}
}
大家要注意,我們?cè)诖?lián)使用多個(gè)if時(shí),要特別注意判斷順序和邊界條件的判斷。
4. if嵌套
if嵌套的語(yǔ)法結(jié)構(gòu)如下:
if(邏輯條件1){
if(邏輯條件2){
//滿足邏輯條件1且滿足條件2執(zhí)行的代碼
}else{
//滿足邏輯條件1但不滿足條件2執(zhí)行的代碼
}
}else{
//不滿足邏輯條件1執(zhí)行的代碼
}
需求案例:學(xué)校舉行跑步比賽,如果成績(jī)?cè)?5秒以內(nèi),可以進(jìn)入決賽,男的進(jìn)入男子組決賽,女的進(jìn)入女子組決賽。
public class Demo01 {
public static void main(String[] args) {
// if多條件嵌套
Scanner sc=new Scanner(System.in);
//學(xué)校舉行跑步比賽,如果成績(jī)?cè)?5秒以內(nèi),可以進(jìn)入決賽,男的進(jìn)入男子組決賽,女的進(jìn)入女子組決賽
System.out.println("請(qǐng)輸入你的比賽成績(jī)");
double score = sc.nextDouble();
if(score < 15){
System.out.println("請(qǐng)輸入你的性別");
String sex = sc.next();
if("男".equals(sex)){
System.out.println("恭喜進(jìn)入男子組");
}else{
System.out.println("恭喜進(jìn)入女子組");
}
}else{
System.out.println("很遺憾你被淘汰了!!!");
}
}
}
5.if語(yǔ)句很費(fèi)效率嗎?
●在Java中,if語(yǔ)句本身并不是特別費(fèi)效率。if語(yǔ)句的效率通常取決于它所包含的代碼和邏輯。
●當(dāng)if語(yǔ)句的判斷條件非常簡(jiǎn)單且快速時(shí),它對(duì)程序性能的影響通??梢院雎圆挥?jì)。然而,如果if語(yǔ)句的條件比較復(fù)雜,例如需要進(jìn)行多次計(jì)算或調(diào)用方法,則會(huì)影響程序的性能。
●此外,如果if語(yǔ)句的條件經(jīng)常變化,那么編譯器很難對(duì)它進(jìn)行優(yōu)化,這可能會(huì)導(dǎo)致性能下降。
●綜上所述,如果if語(yǔ)句的條件簡(jiǎn)單,代碼執(zhí)行效率高,那么它并不會(huì)明顯地影響程序性能。但如果if語(yǔ)句的條件較為復(fù)雜或頻繁變化,則需要仔細(xì)考慮如何優(yōu)化程序以提高性能。
6.java中的else
在Java中,else if是用于在if語(yǔ)句后添加額外的條件分支的一種語(yǔ)法結(jié)構(gòu)。它允許您檢查多個(gè)條件,并在每個(gè)條件為真時(shí)執(zhí)行相應(yīng)的代碼塊。
代碼示范:
if (score >= 90) {
System.out.println("優(yōu)秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 70) {
System.out.println("中等");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
●在這個(gè)例子中,我們檢查了一個(gè)score變量的值,并根據(jù)它的值輸出不同的文本。如果score大于或等于90,輸出"優(yōu)秀",否則檢查它是否大于或等于80,如果是,輸出"良好",以此類推。如果所有條件都不滿足,最后執(zhí)行else語(yǔ)句中的代碼塊。
●需要注意的是,在if語(yǔ)句中,只有第一個(gè)條件分支被執(zhí)行。如果第一個(gè)條件分支不成立,則繼續(xù)檢查下一個(gè)else if語(yǔ)句中的條件分支,直到找到一個(gè)滿足條件的分支或者執(zhí)行else語(yǔ)句。
●總之,else if語(yǔ)句是Java中用于添加多個(gè)條件分支的一種語(yǔ)法結(jié)構(gòu),它允許您檢查多個(gè)條件,并在每個(gè)條件為真時(shí)執(zhí)行相應(yīng)的代碼塊。
看到現(xiàn)在你知道if和else這對(duì)好基友該如何使用了嗎?大家看完一定要多多練習(xí),這樣才能總結(jié)知識(shí)點(diǎn)。