程序控制流程由淺入深(上篇):順序流程和選擇流程
“就象任何有感知的生物一樣,程序必須能操縱自己的世界,在執行過程中作出判斷與選擇。”這是Thinking In Java的作者說的一句話。其實大多數編程語言就有自己的流程控制機制,在JAVA中,程序有三種執行流程:順序流程、選擇流程和循環流程。這三種流程在語言之間幾乎是共同的。
順序流程
順序流程是最爲常見也是最簡單的流程,正如上圖所示,順序流程就是一條一條有序的程序語句,計算機會按照先後順序執行。
順序流程是最爲常見的一種流程,常見到我們不用過多的去學習更多關於它的知識,此處,我們用過一個簡單的程序去體驗一下即可,這個程序記錄了我們每天都在幹什麼事情。
例子程序:
選擇流程
選擇流程,又叫做分支流程。默認情況下,計算機會按照順序執行程序,但是有些情況下,我們希望計算機根據實際情況選擇不同的流程去執行,此時選擇流程就能發揮作用。JAVA爲我們提供了兩種方式去實現選擇流程:if-else語句和switch-case語句。
if-else語句
if-else語句或許是最白話文的流程控制語句,其中的else是可選的,所以它有兩種語法格式:
if(條件表達式) { 語句1 語句2 語句3}或者if(條件表達式) { 語句1 語句2 語句3} else { 語句4 語句5 語句6}
說明:
1、“條件表達式”必須產生一個boolean結果。
2、“語句”可以是一個以分號(;)結尾的簡單語句,也可以是一個包含在大括號{}裏面的語句塊。
3、當只有一條語句的時候,if語句的格式可以簡化爲:
if(條件表達式)
語句
但是,實踐告訴我們,這種簡化的方式並不是很優雅,我們極其不推薦這種寫法。
我們改造一下上面“記錄我們每天都在幹什麼”的程序來體驗一下if-else語句,改造之後需要實現如下功能:起牀洗漱後,如果是成年人就去上班,否則就去上學。
前面我提過,if-else語句可能是最爲白話文的一種流程控制語句,因爲它的語義很好理解,但是在實戰中,不同if-else寫法能夠體現一個程序員的資深程度,甚至在面試中能夠決定你的薪水等級,下面我舉一個例子:寫一個方法,判斷給定的兩個int類型參數a和b的關係(a大於b輸出1、a小於b輸出-1、a等於b輸出0)。
新手寫的:
老司機寫的:
switch-case語句
switch-case語句的語法結構如下:
switch(變量){ case 變量值1: 語句1; 語句2; 語句3; break; case 變量值2: 語句4; 語句5; 語句6; break; case default: 語句7; 語句8; 語句9;}
說明:
1、變量類型只能是int、short、char、byte、String(JDK7之後)和enum
2、JVM在進行case匹配時,默認從上向下匹配:
(1) 匹配不到,程序就執行default下面的語句(語句7、語句8、語句9),例如:
(2) 當所有case都沒有break時,JVM會從匹配到的那個才case開始執行後面所有的case,這就是我們常說的case穿透問題,例如:
因此,switch-case語句中一定要爲每個case添加break
查看原文 >>