先用一張圖來說明今天的大綱
-------------------------------------------------------------------------------------------
順序結(jié)構(gòu)
概念:如果代碼里沒有流程控制,程序是按照書寫的格式從上而下一行一行執(zhí)行的,
一條語句執(zhí)行完之后繼續(xù)執(zhí)行下一條語句,中間沒有判斷和跳轉(zhuǎn),直到程序的結(jié)束。
如圖:
選擇結(jié)構(gòu)
概念:如果使用程序描述“如果今天是周一,就上班,如果今天是周二就逛街,如果今天是周三就去公園... ...”。顯然使用順序結(jié)構(gòu)是搞不定的。
因?yàn)榇藭r(shí)程序具有多個(gè)條件,需要通過條件判斷來決定程序具體做什么,那怎么辦呢?通過判斷條件來做選擇的語句,我們稱為選擇語句或分支語句。
現(xiàn)在,我們一起來學(xué)習(xí)選擇結(jié)構(gòu),選擇結(jié)構(gòu)有兩種:分別是if和switch。
選擇結(jié)構(gòu)-if
if語句使用boolean表達(dá)式或boolean值作為選擇條件,有三種結(jié)構(gòu)形式:
--------------------------------------------------------------------
第一種結(jié)構(gòu):
if(boolean條件)
{
代碼/當(dāng)boolean條件結(jié)果為true的時(shí)候,就執(zhí)行這里的代碼.
}
明天不下雨,我們就去公園.
注意:
1):不能寫出:if(boolean條件);{}
2):若if的語句只有一句話,其實(shí)可以省略{},即是如此,也必須得寫{}.
3):對(duì)于boolean類型的表達(dá)式,不要使用 boolean表達(dá)式==true的寫法.
總之按照標(biāo)準(zhǔn)if語句來寫就可以了,要從基礎(chǔ)做好規(guī)范額?。。?/p>
第二種結(jié)構(gòu):if-else語句.
如果......,否則......
if(boolean條件)
{
當(dāng)boolean條件結(jié)果為true的時(shí)候,就執(zhí)行這里的代碼.
}
else
{
當(dāng)boolean條件結(jié)果為false的時(shí)候,就執(zhí)行這里的代碼.
}
------------------------------
if-else結(jié)構(gòu)和三元運(yùn)算符的區(qū)別:
1):一個(gè)是結(jié)構(gòu),一個(gè)運(yùn)算表達(dá)式.
2):運(yùn)算表達(dá)式的是必須得有一個(gè)結(jié)果的.
3):從功能上,從語義上是相同的.
------------------------------
不能單獨(dú)使用else,必須先有if,再有else.
來來來,在講解下一個(gè)if結(jié)構(gòu)前來個(gè)需求,大家知道如何完成嗎??
需求:考試成績(jī)大于90分,就打印優(yōu),如果大于80分,打印良,如果大于70分,打印中,其他情況打印多多努力。對(duì)于這個(gè)案例,如何解決.
這種情況可以使用下面if-elseif-else語句.
if語句的第三種結(jié)構(gòu):if-elseif-else語句.
if(boolean條件1)
{
當(dāng)條件1為true的時(shí)候,執(zhí)行這里.
}
else if(boolean條件2)
{
當(dāng)條件2為true的時(shí)候,執(zhí)行這里
}
else if(boolean條件3)
{
當(dāng)條件3為true的時(shí)候,執(zhí)行這里
}
else
{
上述所有條件,都不滿足,就執(zhí)行這里.
}
-圖片鎮(zhèn)樓---------------
上面需求答案如下:
選擇結(jié)構(gòu)-switch
上述判斷today變量的例子,從對(duì)與錯(cuò)的角度思考,沒問題.但是,程序的可讀性不好,不太簡(jiǎn)潔.----->switch語句(更簡(jiǎn)單,功能相同)
switch的語法結(jié)構(gòu)(和if-elseif-else的語義相同):
---------------------------------
switch(整型表達(dá)式)
{
case A值:
語句1;
break;//結(jié)束
case B值:
語句2;
break;
case C值:
語句3;
break;
default:
上述所有的結(jié)果值都不滿足
語句.
}
上面需求用switch解決如下:
switch的語法分析以及注意:
1):switch中的表達(dá)式的結(jié)果/類型,必須是整數(shù)類型.
整數(shù)類型:byte,short,char,int.沒有l(wèi)ong.
從Java7開始,switch也支持String類型.
2):switch語句,一旦找到入口,就會(huì)進(jìn)入,并執(zhí)行功能語句,后面的case不再判斷,除非語句break,或return或則執(zhí)行完成,才會(huì)停下來-----穿透.
3):default表示,當(dāng)case中的值都不成立的時(shí)候,才執(zhí)行,一般的放在最后.
----------------------------------抉擇-------------------------------------
if和switch都是選擇語句/條件語句,那到底什么時(shí)候選擇使用if,什么時(shí)候選擇使用switch.
分析各自的優(yōu)缺點(diǎn):
1): 對(duì)于所有的條件語句,if都可以完成.
2): swtich語句,只能正對(duì)于結(jié)果為數(shù)值的情況做判斷.
3): 當(dāng)if中條件的結(jié)果是數(shù)值的時(shí)候,使用switch更簡(jiǎn)單.
循環(huán)結(jié)構(gòu)
故事:話說唐僧師徒四人還在21世紀(jì)繼續(xù)闖關(guān),一天,師徒四人來到數(shù)字王國(guó):
第一關(guān):Boss叫傻乎乎的唐僧叫500聲帥哥。可是唐僧平時(shí)吃素,體力不好,叫200聲就暈了,咋辦,悟空馬上變了個(gè)復(fù)讀機(jī)出來,錄音,播放。
第二關(guān):Boss覺得唐僧好欺負(fù)再叫他從1數(shù)到100。此時(shí)復(fù)讀機(jī)用不上來了,咋辦?
第三關(guān):求100以內(nèi)正整數(shù)和?
于是,唐僧算1到25的和,悟空算26到50的和,八戒算51到75的和,沙僧算76到100的和。
第四關(guān):求1000以內(nèi)正整數(shù)和?
于是,唐僧算1到250的和,悟空算251到500的和,八戒算501到750的和,沙僧算751到1000的和。
第五關(guān):求10000以內(nèi)正整數(shù)和?
ブプヘベ崩潰ingペホボポ。。。。。
-------------------------------------------------
案例:叫500聲帥鍋
案例:從1數(shù)到100
案例:幫大圣解決問題,計(jì)算100以內(nèi)的正整數(shù)和。
在講解案例之前我們首先把循環(huán)結(jié)構(gòu)的分類說一下:
三大循環(huán)之while循環(huán):
語法:
while(boolean表達(dá)式)
{
若boolean表達(dá)式結(jié)果為true,則執(zhí)行這里.循環(huán)體
}
注意:先判斷boolean表達(dá)式.
三大循環(huán)之do while循環(huán):
語法:
do
{
循環(huán)體
}while(boolean表達(dá)式);
注意: do while,不管boolean表達(dá)式對(duì)與錯(cuò),先執(zhí)行一次循環(huán)體.
即使boolean表達(dá)式為false,do while也會(huì)執(zhí)行一次.
推論: 無論條件如何,dowhile至少會(huì)執(zhí)行一次.
三大循環(huán)之for循環(huán):
語法:
for(初始化語句;boolean表達(dá)式;循環(huán)之后的操作語句)
{
循環(huán)體
}
初始化語句:定義變量,賦初始值;
boolean表達(dá)式:判斷條件,若條件為true,則進(jìn)入循環(huán)體,若為false,則跳過循環(huán).
循環(huán)之后的操作語句: 變量的自增/自減操作.
執(zhí)行順序:
1):初始化語句.
2):boolean表達(dá)式:
true: GOTO 3
false:跳過循環(huán),不執(zhí)行循環(huán)體
3):執(zhí)行循環(huán)體.
4):循環(huán)之后的操作語句, GOTO 2.
上面三個(gè)案例用循環(huán)結(jié)構(gòu)解決如下:(看不清晰可以點(diǎn)擊大圖)
三大循環(huán)語句都一樣,僅僅只是語法結(jié)構(gòu)上不一樣而已.
把while循環(huán)和for循環(huán)轉(zhuǎn)換.
提示:
三大循環(huán),是可以互換的,一般情況下,要是指定次數(shù)的循環(huán),選用for循環(huán)要方便點(diǎn)。
一般的,習(xí)慣上選擇i、j、k作為循環(huán)變量。
控制循環(huán)結(jié)構(gòu)語句
break語句:結(jié)束當(dāng)前所在的循環(huán).
注意:break之后的語句,執(zhí)行不到,若編寫了,則語法報(bào)錯(cuò).
continue語句:表示跳過的這一次當(dāng)前循環(huán),繼而進(jìn)行下一次循環(huán).
注意:contine之后的語句,執(zhí)行不到,若編寫了,則語法報(bào)錯(cuò).
return語句:表示結(jié)束循環(huán)所在的方法,方法都結(jié)束了,循環(huán)結(jié)構(gòu)自然也就結(jié)束了。
-------------下面控制外層循環(huán)比較少用,即基本不用---------------
控制外層循環(huán):此時(shí)就得使用標(biāo)簽了,標(biāo)簽就是給某個(gè)循環(huán)起的別名,不過該別名得滿足標(biāo)識(shí)符的規(guī)范。
若要控制外層循環(huán),就在break或continue后面跟上循環(huán)的別名就OK了
如: break <標(biāo)簽名>;
一張圖總結(jié)今天內(nèi)容:
最后:在學(xué)習(xí)java中,想以后能在編程道路走得更長(zhǎng),基礎(chǔ)很重要,找一門高級(jí)語言入門,進(jìn)而深度學(xué)習(xí),這樣轉(zhuǎn)其它語言已經(jīng)不是事兒了!大家要記得:基礎(chǔ)基礎(chǔ)很重要!親愛的JAVA醬們: 學(xué)習(xí)有困難或者想獲取JAVA資料請(qǐng)加JAVA學(xué)習(xí)交流群 374320282或是加 小雨QQ746635765(←長(zhǎng)按可復(fù)制)
聯(lián)系客服