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