本文是《凱哥陪你學(xué)系列之java基礎(chǔ)篇》
本講主要內(nèi)容:
判斷結(jié)構(gòu)
程序執(zhí)行順序,從上到下一行一行的執(zhí)行的。
1判斷語(yǔ)句
if語(yǔ)句:
三種格式:
1:只有if語(yǔ)句
2:if ….else語(yǔ)句
3:if ….else嵌套使用
1:只有if語(yǔ)句的
語(yǔ)法:
if(條件表達(dá)式) {
執(zhí)行語(yǔ)句
}
作用:?jiǎn)螚l件判斷
注意:條件表達(dá)式的結(jié)果只能是true或是false
代碼演示:
//需求:如果x>2輸出yes
int x = 3;
if(x >2){
System.out.println("YES");
}
System.out.println("GAME OVER");
結(jié)果:
輸出結(jié)果分析:
if語(yǔ)句中條件表達(dá)式為true的時(shí)候才會(huì)執(zhí)行被if 大括號(hào)包含的代碼瞒瘸。
如果條件表達(dá)式為false的時(shí)候,if語(yǔ)句及其大括號(hào)包含的代碼都不會(huì)被執(zhí)行。
而 3>2 返回true所以會(huì)執(zhí)行if大括號(hào)內(nèi)的代碼。
注意:
雖然if語(yǔ)句有自己的控制范圍(就是if后面大括號(hào)的內(nèi)容)离福。但是如下代碼輸入的結(jié)果是什么?
int b = 1;
if(x>0)
System.out.println(b);
System.out.println("GAME OVER");
輸出結(jié)果:
分析原因:
雖然if有自己控制范圍炼蛤,但是當(dāng)if語(yǔ)句后面只有一行執(zhí)行語(yǔ)句的時(shí)候妖爷,此時(shí)if后面的一對(duì)大括號(hào)可以省略。
也即是說:如果if后面沒有大括號(hào)確定范圍理朋。那么if語(yǔ)句只能控制離其最近的單條代碼絮识。
擴(kuò)展:
if 語(yǔ)句嵌套使用:
語(yǔ)法:
if語(yǔ)句嵌套使用
if(表達(dá)式){
if(條件表達(dá)式2){
執(zhí)行代碼
}
}
代碼演示:
if(x>2){
if(x==3){
System.out.println("YES");
}
}
System.out.println("GAME OVER");
執(zhí)行結(jié)果:
思考:自己試著分析結(jié)果由來。
思考:如下代碼輸入結(jié)果
if(x>2)
if(x>3)
System.out.println("YES");
System.out.println("GAME OVER");
數(shù)據(jù)結(jié)果:
分析輸出結(jié)果原因:
代碼中兩個(gè)if都沒有大括號(hào)指明范圍嗽上。所以if只能控制離其最近的單條語(yǔ)句笋除。
所以:if(x>2) 這句離其最近的是 if(x>3)
而 if(x>3)離其最近的一句是:System.out.println("YES");
又因?yàn)?x = 3 是大于2的。所以 x>2 返回true.就會(huì)接著執(zhí)行下面一句 if(x>3)這一句炸裆。
而 x=3不大于3的。所以 x>3返回false鲜屏。這時(shí)候就不會(huì)再執(zhí)行其下面的一句国拇。也就是:System.out.println("YES");
而直接在往下一行執(zhí)行。
所以YES不會(huì)被輸出惯殊。而GAME OVER會(huì)被輸出酱吝。
2:if()….else使用
語(yǔ)法:
if(條件表達(dá)式){
執(zhí)行語(yǔ)句
}eles{
執(zhí)行語(yǔ)句
}
作用:?jiǎn)螚l件判斷。如果不成立執(zhí)行else語(yǔ)句
代碼演示:
//需求:如果x>2輸出yes 否則輸出no
int x = 3;
if(x >2){
System.out.println("YES");
}else{
System.out.println("NO");
}
輸出結(jié)果:
輸出結(jié)果分析:
3>2結(jié)果是true土思。所以就執(zhí)行輸出YES這條語(yǔ)句务热。而else語(yǔ)句不執(zhí)行。
簡(jiǎn)單理解:
if(你的性別是男){
請(qǐng)去男廁所
}else{
請(qǐng)去女廁所
}
思考:
如下代碼輸出什么己儒?
int a = 2 ,b;
if(a>1)
b = 100;
else
b = 200;
System.out.println("b="+b);
輸出結(jié)果:
擴(kuò)展:
簡(jiǎn)單的if else可以使用三元運(yùn)算符代替
上面代碼使用三元運(yùn)算符表示:
b = (a>1?100:200);
完整代碼:
int a = 2 ,b;
if(a>1)
b = 100;
else
b = 200;
System.out.println("b="+b);
//使用三元運(yùn)算符
b = (a>1?100:200);
System.out.println("b="+b);
System.out.println("GAME OVER");
輸出結(jié)果
注意:
if else簡(jiǎn)化成三元運(yùn)算符前提:
當(dāng)if else 運(yùn)算后崎岂,有一個(gè)具體的結(jié)果時(shí)候,可以簡(jiǎn)寫成三元運(yùn)算符闪湾。
3:ifelse嵌套使用
語(yǔ)法:
if(條件表達(dá)式){
執(zhí)行語(yǔ)句
} else if(條件表達(dá)式2){
執(zhí)行語(yǔ)句2
}else{
執(zhí)行語(yǔ)句3
}
作用:多條件判斷冲甘。
注意:雖然上面代碼很多。但是都是對(duì)同一個(gè)事物做判斷的途样。所以運(yùn)算完成后江醇,最終有且只有一個(gè)執(zhí)行語(yǔ)句被執(zhí)行。
代碼演示:
int x = 3;
if(x >1){
System.out.println("1");
}else if(x >2){
System.out.println("2");
} else if( x>3){
System.out.println("3");
}else{
System.out.println("4");
}
System.out.println("GAME OVER");
輸出結(jié)果:
分析原因:
因?yàn)?x = 3 所以 x>1返回true 何暇。所以輸出1陶夜。雖然 3>2 也返回的是ture.但是 (x>2)是在else語(yǔ)句的。只有當(dāng)上面if條件返回false的時(shí)候才會(huì)執(zhí)行else的語(yǔ)句裆站。
所以条辟,只輸出1.
思考:
如果去掉else后,修改成如下代碼遏插,運(yùn)行結(jié)果又是什么捂贿?
int j = 3;
if(j >1){
System.out.println("j1");
}
if(j >2){
System.out.println("j2");
}
if( j>3){
System.out.println("j3");
}else{
System.out.println("j4");
}
System.out.println("GAME OVER");
運(yùn)行結(jié)果:
分析輸出結(jié)果:
if(j>1){}這個(gè)是完整的一條語(yǔ)句。
因?yàn)?if(j>2)前面沒有else 所以 if(j>2){}這又是一條完整的語(yǔ)句
同理胳嘲,if(j>3){}else{}這是一條完整的語(yǔ)句厂僧。
所以在執(zhí)行完輸出j1后,也會(huì)執(zhí)行輸出j2的語(yǔ)句了牛。
有因?yàn)?不大于3.所以 j>3返回false.所以會(huì)執(zhí)行else的語(yǔ)句颜屠,也就是輸出j4的語(yǔ)句。
所以鹰祸,輸出結(jié)果就是 j1 j2 j4
if 語(yǔ)句練習(xí):
1:根據(jù)用戶輸入的數(shù)值甫窟,輸出對(duì)應(yīng)的星期。
if語(yǔ)句練習(xí)2
需求:
根據(jù)用戶輸入的數(shù)值蛙婴,輸出對(duì)應(yīng)的月中上中下旬值粗井。
各位自己練習(xí)下。答案下節(jié)公布。
ps:歡迎關(guān)注凱哥微信公眾號(hào):凱哥Java
相關(guān)推薦:
從零學(xué)java筆錄-第10篇 數(shù)據(jù)類型四
從零學(xué)java筆錄-第9篇 數(shù)據(jù)類型 三
從零學(xué)java筆錄-第8篇 數(shù)據(jù)類型二
從零學(xué)java筆錄-第7篇 數(shù)據(jù)類型一
從零學(xué)java筆錄-第6篇 進(jìn)制之間轉(zhuǎn)換
從零學(xué)java筆錄-第5篇 java語(yǔ)言基礎(chǔ)組成
從零學(xué)java筆錄 Helloword 細(xì)節(jié)說明
?