本文是《凱哥陪你學(xué)系列之java基礎(chǔ)篇》
本講主要內(nèi)容:
判斷結(jié)構(gòu)
程序執(zhí)行順序,從上到下一行一行的執(zhí)行的。
1判斷語句
if語句:
三種格式:
1:只有if語句
2:if ….else語句
3:if ….else嵌套使用
1:只有if語句的
語法:
if(條件表達(dá)式) {
執(zhí)行語句
}
作用:單條件判斷
注意:條件表達(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語句中條件表達(dá)式為true的時(shí)候才會執(zhí)行被if 大括號包含的代碼。
如果條件表達(dá)式為false的時(shí)候,if語句及其大括號包含的代碼都不會被執(zhí)行。
而 3>2 返回true所以會執(zhí)行if大括號內(nèi)的代碼。
注意:
雖然if語句有自己的控制范圍(就是if后面大括號的內(nèi)容)。但是如下代碼輸入的結(jié)果是什么?
int b = 1;
if(x>0)
System.out.println(b);
System.out.println('GAME OVER');
輸出結(jié)果:
分析原因:
雖然if有自己控制范圍,但是當(dāng)if語句后面只有一行執(zhí)行語句的時(shí)候,此時(shí)if后面的一對大括號可以省略。
也即是說:如果if后面沒有大括號確定范圍。那么if語句只能控制離其最近的單條代碼。
擴(kuò)展:
if 語句嵌套使用:
語法:
if語句嵌套使用
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都沒有大括號指明范圍。所以if只能控制離其最近的單條語句。
所以:if(x>2) 這句離其最近的是 if(x>3)
而 if(x>3)離其最近的一句是:System.out.println('YES');
又因?yàn)?x = 3 是大于2的。所以 x>2 返回true.就會接著執(zhí)行下面一句 if(x>3)這一句。
而 x=3不大于3的。所以 x>3返回false。這時(shí)候就不會再執(zhí)行其下面的一句。也就是:System.out.println('YES');
而直接在往下一行執(zhí)行。
所以YES不會被輸出。而GAME OVER會被輸出。
2:if()….else使用
語法:
if(條件表達(dá)式){
執(zhí)行語句
}eles{
執(zhí)行語句
}
作用:單條件判斷。如果不成立執(zhí)行else語句
代碼演示:
//需求:如果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這條語句。而else語句不執(zhí)行。
簡單理解:
if(你的性別是男){
請去男廁所
}else{
請去女廁所
}
思考:
如下代碼輸出什么?
int a = 2 ,b;
if(a>1)
b = 100;
else
b = 200;
System.out.println('b='+b);
輸出結(jié)果:
擴(kuò)展:
簡單的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簡化成三元運(yùn)算符前提:
當(dāng)if else 運(yùn)算后,有一個(gè)具體的結(jié)果時(shí)候,可以簡寫成三元運(yùn)算符。
3:ifelse嵌套使用
語法:
if(條件表達(dá)式){
執(zhí)行語句
} else if(條件表達(dá)式2){
執(zhí)行語句2
}else{
執(zhí)行語句3
}
作用:多條件判斷。
注意:雖然上面代碼很多。但是都是對同一個(gè)事物做判斷的。所以運(yùn)算完成后,最終有且只有一個(gè)執(zhí)行語句被執(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語句的。只有當(dāng)上面if條件返回false的時(shí)候才會執(zhí)行else的語句。
所以,只輸出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àn)?if(j>2)前面沒有else 所以 if(j>2){}這又是一條完整的語句
同理,if(j>3){}else{}這是一條完整的語句。
所以在執(zhí)行完輸出j1后,也會執(zhí)行輸出j2的語句。
有因?yàn)?不大于3.所以 j>3返回false.所以會執(zhí)行else的語句,也就是輸出j4的語句。
所以,輸出結(jié)果就是 j1 j2 j4
if 語句練習(xí):
1:根據(jù)用戶輸入的數(shù)值,輸出對應(yīng)的星期。
if語句練習(xí)2
需求:
根據(jù)用戶輸入的數(shù)值,輸出對應(yīng)的月中上中下旬值。
各位自己練習(xí)下。答案下節(jié)公布。
ps:歡迎關(guān)注凱哥微信公眾號:凱哥Java