国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java零基礎(chǔ)快速入門(mén)|控制語(yǔ)句(上)

2021-02-02 11:25 作者:動(dòng)力節(jié)點(diǎn)小王本王  | 我要投稿


本篇文章主要內(nèi)容:

控制語(yǔ)句概述

if語(yǔ)句

Switch語(yǔ)句

學(xué)習(xí)目標(biāo)

記住所有控制語(yǔ)句的語(yǔ)法格式,理解不同的控制語(yǔ)句分別在哪些不同的情況下使用,并且能夠熟練編寫(xiě)這些控制語(yǔ)句。

知識(shí)框架

控制語(yǔ)句概述

在大部分編程語(yǔ)言當(dāng)中都會(huì)存在控制語(yǔ)句,控制語(yǔ)句是一個(gè)程序的靈魂,我們只依靠“標(biāo)識(shí)符、關(guān)鍵字、變量、運(yùn)算符”等零散的知識(shí)點(diǎn)是無(wú)法進(jìn)行流程控制的,無(wú)法實(shí)現(xiàn)一個(gè)具體的功能或業(yè)務(wù),所以控制語(yǔ)句這一章節(jié)非常重要。

現(xiàn)實(shí)生活中哪些業(yè)務(wù)需要使用控制語(yǔ)句呢?

比如說(shuō)“小孩身高如果高于 1.2?米,則乘坐交通工具就需要收費(fèi)了,反之則免費(fèi)”,再比如“A 賬戶(hù)向 B 賬戶(hù)轉(zhuǎn)賬 10000 元,首先需要判斷A 賬戶(hù)的余額是否大于等于10000 元,如果余額充足則可以轉(zhuǎn)賬,不足則無(wú)法轉(zhuǎn)賬”等等, 這些業(yè)務(wù)當(dāng)中都需要使用控制語(yǔ)句進(jìn)行控制才能完成。

什么是控制語(yǔ)句,官方的解釋是這樣的:

控制語(yǔ)句即用來(lái)實(shí)現(xiàn)對(duì)程序流程的選擇、循環(huán)、轉(zhuǎn)向 和返回等進(jìn)行控制。Java 語(yǔ)言中共有 8 種控制語(yǔ)句,可以分為“選擇語(yǔ)句”,“循環(huán)語(yǔ)句”, “轉(zhuǎn)向語(yǔ)句”,“返回語(yǔ)句”四類(lèi)。

那么,這8 種控制語(yǔ)句分別是什么呢?

if 語(yǔ)句、switch 語(yǔ)句、for?循環(huán)、while 循環(huán)、do..while 循環(huán)、break 語(yǔ)句、continue 語(yǔ)句、return 語(yǔ)句。其中if 和switch 語(yǔ)句屬于選擇語(yǔ)句,for、while、do..while 語(yǔ)句屬于循環(huán)語(yǔ)句,break 和continue 語(yǔ)句屬于轉(zhuǎn)向語(yǔ)句,return 屬于返回語(yǔ)句。

接下來(lái)讓我們認(rèn)真的學(xué)習(xí)每一個(gè)語(yǔ)句。

?

選擇語(yǔ)句

選擇語(yǔ)句又稱(chēng)為分支語(yǔ)句,它通過(guò)對(duì)給定的條件進(jìn)行判斷,從而決定執(zhí)行兩個(gè)或多個(gè)分支中的哪一支。

因此,在編寫(xiě)選擇語(yǔ)句之前,應(yīng)該首先明確判斷條件是什么,并確定當(dāng)判斷結(jié)國(guó)為“真”或“假”時(shí)應(yīng)分別執(zhí)行什么樣的操作/算法。

在 Java 語(yǔ)言中選擇語(yǔ)句主要提供了兩個(gè), 一個(gè)是if?語(yǔ)句,另一個(gè)則是switch 語(yǔ)句。

if語(yǔ)句

我們先來(lái)看if 語(yǔ)句,if 語(yǔ)句的編寫(xiě)方式歸納為以下四種,請(qǐng)看下圖:

if 語(yǔ)句語(yǔ)法格式

if 語(yǔ)句是非常簡(jiǎn)單容易理解的,if 被翻譯為如果,else 被翻譯為其它,我們針對(duì)以上第二種寫(xiě)法進(jìn)行說(shuō)明:如果布爾表達(dá)式的結(jié)果是“真”,則執(zhí)行它后面的分支,反之則執(zhí)行 else 對(duì)應(yīng)的分支。好比說(shuō)“如果外面下雨了(真),出門(mén)則拿一把雨傘,反之則不帶雨傘”。再比如“如果你吃飽了(真)就不需要再吃了,反之則需要繼續(xù)吃東西”。那么以上兩個(gè)業(yè)務(wù)用代碼應(yīng)該如何實(shí)現(xiàn)呢?請(qǐng)看下面程序:

上圖中第一種寫(xiě)法對(duì)應(yīng)的原理圖:

圖中第一種寫(xiě)法對(duì)應(yīng)的原理圖

上圖中第二種寫(xiě)法對(duì)應(yīng)的原理圖:

圖中第二種寫(xiě)法對(duì)應(yīng)的原理圖

上圖中第三種寫(xiě)法對(duì)應(yīng)的原理圖:

圖中第三種寫(xiě)法對(duì)應(yīng)的原理圖

上圖中第四種寫(xiě)法對(duì)應(yīng)的原理圖:

圖中第四種寫(xiě)法對(duì)應(yīng)的原理圖

通過(guò)以上原理的分析,我們可以得出?if?語(yǔ)句的任何一種形式在執(zhí)行的時(shí)候只要有一個(gè)分支執(zhí)行,則所對(duì)應(yīng)的整個(gè)if 語(yǔ)句就全部結(jié)束了,換句話(huà)說(shuō),對(duì)于一個(gè)獨(dú)立的完整的 if 語(yǔ)句來(lái)說(shuō), 最多只能有一個(gè)分支執(zhí)行。

另外,我們可以得出“圖 6-1”中的四種寫(xiě)法,其中第二種和第四種都帶有else?分支,所以這兩種寫(xiě)法我們可以確??隙〞?huì)有一個(gè)分支執(zhí)行,另外兩種寫(xiě)法則無(wú)法保證,也就是說(shuō)第一種和第三種這兩種寫(xiě)法可能一個(gè)分支都不會(huì)執(zhí)行,這兩種寫(xiě)法的分支是否執(zhí)行取決于條件是否為true。

還有,Java?語(yǔ)言中有這樣一條規(guī)定:當(dāng)分支中只有一條Java語(yǔ)句話(huà),大括號(hào)可以省略不寫(xiě), 如以下程序:

雖然大括號(hào)可以省略,但是大家編寫(xiě)程序的時(shí)候一定要小心,分析以下程序錯(cuò)在哪里?

顯然if?是沒(méi)有任何問(wèn)題的,輸出“男”也是沒(méi)問(wèn)題的,輸出“hello?world!”也是正常的, 只不過(guò)負(fù)責(zé)輸出“hello?world!”的那一行代碼不在 if?語(yǔ)句的分支當(dāng)中,那么下面的else?則缺少了if?語(yǔ)句而編譯報(bào)錯(cuò)。換句話(huà)說(shuō),else?以上的代碼都沒(méi)有問(wèn)題,錯(cuò)誤出現(xiàn)在else?缺少了if。

雖然Java規(guī)定當(dāng)分支中只有一條Java語(yǔ)句的話(huà)大括號(hào)可以省略,但是為了程序具有很強(qiáng)的可讀性,所以建議在實(shí)際開(kāi)發(fā)中還是不要省略大括號(hào)會(huì)比較好。

那么,接下來(lái)我們給大家列舉幾個(gè)if 語(yǔ)句的案例,幫助大家更好的理解和運(yùn)用 if 語(yǔ)句。示例代碼 1:業(yè)務(wù)背景:根據(jù)用戶(hù)輸入不同的數(shù)字來(lái)判斷用戶(hù)不同性別,當(dāng)輸入 1?時(shí)性別為男,當(dāng)輸入 0 時(shí)性別為女,輸入其它則不合法。

示例代碼 2:業(yè)務(wù)背景:鍵盤(pán)接收一個(gè)學(xué)生的成績(jī),范圍在[0-100],根據(jù)成績(jī)判斷等級(jí), [90-100]等級(jí)為“優(yōu)秀”,[80-90)等級(jí)為“良好”,[70-80)等級(jí)為“中等”,[60-70)等級(jí)為“及格”,[0-60)等級(jí)為“大笨蛋”,輸入其它數(shù)字表示成績(jī)不合法。

對(duì)于初學(xué)者來(lái)說(shuō)以上程序是可以的,但是對(duì)于老程序員來(lái)說(shuō),以上的代碼就太冗余了,我們將其進(jìn)行優(yōu)化,看以下代碼:

千萬(wàn)別機(jī)械性的一行一行對(duì)抄代碼,實(shí)際上這種學(xué)習(xí)方法是非常痛苦,并且低效的,軟件開(kāi)發(fā)主要培養(yǎng)的是編程思想/編程思路,使用編程的思路解決現(xiàn)實(shí)生活中的問(wèn)題。

當(dāng)然,對(duì)于初學(xué)者來(lái)說(shuō)我們不可能剛開(kāi)始就寫(xiě)出簡(jiǎn)單而高效的程序,這需要不斷的模仿,不斷的積累,尤其我們可以多參考高手寫(xiě)的程序(例如:JDK 源代碼),當(dāng)你的代碼達(dá)到一定量的時(shí)候,你就可以出山了。

示例代碼3:業(yè)務(wù)背景:系統(tǒng)首先接收天氣參數(shù),1??表示下雨天,0??表示晴天,如果天氣是晴天,輸出“走起,一起出去玩耍嘍!”,當(dāng)天氣是下雨天,則繼續(xù)接收性別參數(shù),1 表示男, 0 表示女,當(dāng)性別為女,則拿一把小花傘出去玩,當(dāng)性別為男,則拿一把大黑傘出去玩。

運(yùn)行結(jié)果如下圖所示:

if 語(yǔ)句嵌套演示

通過(guò)以上的程序我們得知,if 語(yǔ)句是可以進(jìn)行嵌套使用的,也就是說(shuō) if 語(yǔ)句的某個(gè)分支當(dāng)中還可以繼續(xù)編寫(xiě)其它 if 語(yǔ)句。實(shí)際上所有的控制語(yǔ)句都是可以進(jìn)行嵌套使用的。

語(yǔ)句嵌套這個(gè)知識(shí)點(diǎn)本來(lái)是不需要拿來(lái)進(jìn)行特殊強(qiáng)調(diào)的,專(zhuān)門(mén)強(qiáng)調(diào)之后反而會(huì)讓初學(xué)者特殊對(duì)待,我希望大家不要特殊對(duì)待嵌套。

雖然被嵌套的是一個(gè)控制語(yǔ)句,但這個(gè)控制語(yǔ)句也是一段普通的java 程序,你說(shuō)呢!如下圖:

控制語(yǔ)句嵌套

總之,選擇語(yǔ)句之 if 語(yǔ)句,在實(shí)際開(kāi)發(fā)中使用頻率非常高,大家一定要掌握 if 語(yǔ)句的編寫(xiě)方式以及運(yùn)行原理,也可以自己想一些現(xiàn)實(shí)生活中的小例子加以練習(xí)。

?

switch語(yǔ)句

switch 語(yǔ)句和if 語(yǔ)句一樣,都屬于選擇語(yǔ)句(分支語(yǔ)句),不再贅述,我們直接來(lái)看一下一個(gè)比較完整的switch 語(yǔ)句結(jié)構(gòu)是怎樣的,請(qǐng)看下圖:

switch 語(yǔ)句完整結(jié)構(gòu)

switch 運(yùn)行原理是怎樣的呢,請(qǐng)看下圖:

switch 語(yǔ)句運(yùn)行原理圖

switch 運(yùn)行原理文字性描述是這樣的(以上圖為例):拿著c 和表達(dá)式 1 進(jìn)行比較,如果相等,則執(zhí)行語(yǔ)句 1,如果不相等,繼續(xù)拿著c 和表達(dá)式2 進(jìn)行比較,如果相等,則執(zhí)行語(yǔ)句2,如果不相等,繼續(xù)...,如果 c 和所有的分支表達(dá)式都不相等,此時(shí)default 分支“語(yǔ)句n+1” 則執(zhí)行。

以上描述是switch 語(yǔ)句的一般性執(zhí)行流程,實(shí)際上在執(zhí)行過(guò)程中還有很多因素的影響,接下來(lái)我將列出使用switch 語(yǔ)句的一些注意事項(xiàng):

switch?語(yǔ)句后面的小括號(hào)“()”當(dāng)中都可以出現(xiàn)什么,在JDK1.6?之前(包括1.6?在內(nèi)) switch?只能探測(cè)int?類(lèi)型的數(shù)據(jù),但是在JDK1.7?之后(包括 1.7?在內(nèi)),switch?語(yǔ)句除了支持int?類(lèi)型之外,還支持 String?類(lèi)型。也就是說(shuō)從 Java7?開(kāi)始 switch?后面小括號(hào)中可以出現(xiàn)字符串。

switch?雖然只能探測(cè)int?類(lèi)型,但是也可以將byte,short,char?類(lèi)型放到小括號(hào)當(dāng)中,因?yàn)檫@些類(lèi)型會(huì)自動(dòng)轉(zhuǎn)換成int?類(lèi)型(小容量向大容量轉(zhuǎn)換稱(chēng)為自動(dòng)類(lèi)型轉(zhuǎn)換)。

switch?語(yǔ)句當(dāng)中case?是可以進(jìn)行合并的,例如以下代碼:

④ switch 語(yǔ)句當(dāng)中當(dāng)某個(gè)分支匹配成功,則開(kāi)始執(zhí)行此分支當(dāng)中的java 語(yǔ)句,當(dāng)遇到當(dāng)前分支中的“break;”語(yǔ)句,switch 語(yǔ)句就結(jié)束了,但是如果當(dāng)前分支中沒(méi)有“break;”語(yǔ)句, 則會(huì)發(fā)生 case 穿透現(xiàn)象,也就是說(shuō)下一個(gè)分支也不再進(jìn)行匹配,直接進(jìn)入下一個(gè)分支執(zhí)行, 直到遇到“break;”為止。例如以下代碼:

執(zhí)行結(jié)果如下所示:

switch 的case 穿透測(cè)試

接下來(lái)我們來(lái)看幾個(gè)switch 的經(jīng)典案例,請(qǐng)看代碼:

示例代碼 1:從鍵盤(pán)接收一個(gè)數(shù)字[1-7],當(dāng)數(shù)字是 1~5 的時(shí)候,控制臺(tái)輸出工作日,當(dāng)數(shù)字是 6~7 的時(shí)候,控制臺(tái)輸出休息日,其他數(shù)字提示錯(cuò)誤信息。

示例代碼2:業(yè)務(wù)背景:鍵盤(pán)接收一個(gè)學(xué)生的成績(jī)(假設(shè)成績(jī)是合法的),范圍在[0-100], 根據(jù)成績(jī)判斷等級(jí),[90-100]等級(jí)為“優(yōu)秀”,[80-90)等級(jí)為“良好”,[70-80)等級(jí)為“中等”, [60-70)等級(jí)為“及格”,[0-60)等級(jí)為“大笨蛋”。只允許使用switch,不允許使用 if?語(yǔ)句。

運(yùn)行結(jié)果如下圖所示:

switch 判斷成績(jī)等級(jí)

switch 判斷成績(jī)等級(jí)

以上程序在編寫(xiě)時(shí)候的核心技巧是:

[90-100]分的所有數(shù)字,包括浮點(diǎn)型數(shù)字,讓其除以 10?之后強(qiáng)轉(zhuǎn)為int 類(lèi)型,結(jié)果一定是 9 或者 10。

[80-90)分的所有數(shù)字,除以10 之后取整,結(jié)果一定是8,以此類(lèi)推。

沒(méi)關(guān)系同學(xué)們,大家在起初學(xué)習(xí)的時(shí)候不一定會(huì)馬上寫(xiě)出來(lái)以上程序, 這個(gè)過(guò)程是需要積累的,下去之后先自己模仿我的程序,慢慢的你就會(huì)寫(xiě)了。

if?和 switch?都是條件判斷語(yǔ)句(分支語(yǔ)句/選擇語(yǔ)句),在效果上是沒(méi)有什么差別的。而不同, 我們可以從效率上來(lái)看一看,舉一個(gè)很簡(jiǎn)單的例子: if(a?> b) { a?= b;} else?{ b?= a; } 如果將這個(gè)例子放在 switch?語(yǔ)句中,也并不是不能實(shí)現(xiàn),但是實(shí)現(xiàn)起來(lái)可能會(huì)比較麻煩一些,因?yàn)樵?/span>

switch 語(yǔ)句中case 要求的是常量,一般是不能進(jìn)行邏輯判斷的,所以這也是 if 語(yǔ)句優(yōu)于switch 語(yǔ)句的地方。但是如果您判斷的都是幾個(gè)常量的數(shù)據(jù),我建議您最好采用 switch??語(yǔ)句,雖然if 語(yǔ)句也是能實(shí)現(xiàn)的,但是性能就比switch 差的有點(diǎn)遠(yuǎn)了。


最后附Java零基礎(chǔ)視頻教程給大家,配合學(xué)習(xí)效果更佳!!


Java零基礎(chǔ)快速入門(mén)|控制語(yǔ)句(上)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
临泉县| 门源| 嘉祥县| 伽师县| 雅江县| 万载县| 五河县| 新民市| 昌图县| 新巴尔虎右旗| 西藏| 福贡县| 建宁县| 耒阳市| 郁南县| 石河子市| 浠水县| 泗水县| 静安区| 台湾省| 阳原县| 盐山县| 忻州市| 九寨沟县| 永平县| 凤冈县| 赤峰市| 新营市| 七台河市| 密云县| 泰宁县| 渝中区| 长汀县| 霸州市| 山西省| 濉溪县| 澄城县| 绿春县| 拜泉县| 磐安县| 安远县|