Java基礎(流程控制語句、選擇結構、迴圈結構、方法)
阿新 • • 發佈:2019-01-22
一、流程控制語句
1、 概述:
在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。
也就是說程式的流程對執行結果有直接的影響。所以,我們必須清楚每條語句
的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現我們要完成的功能。
2、流程控制語句分類
A:順序結構
B:選擇結構
C:迴圈結構
3、不同語句的執行順序
A:順序結構 從上往下,依次執行
B:選擇結構按照不同的選擇,執行不同的程式碼
C:迴圈結構 做一些重複的程式碼
二、選擇結構(if語句)
1、 Java語言提供了兩種選擇結構語句
A: if語句
B: switch語句
2、 if語句有三種格式
A: 格式一:
if(比較表示式){
語句體;
}
執行流程:
判斷比較表示式的值,看是true還是false
如果是true,就執行語句體,
如果是false,就不執行語句體。
B:格式二:
if(比較表示式){
語句體1;
}else {
語句體2;
}
執行流程:
判斷比較表示式的值,看是true還是false
如果是true,就執行語句體1
如果是false,就執行語句體2
C:格式3
if(比較表示式1){
語句體1;
}else if(比較表示式2){
語句體2;
}
...
else {
語句體n+1;
}
執行流程:
判斷比較表示式1的值,看是true還是false
如果是true,就執行語句體1
如果是false,就繼續判斷比較表示式2的值,看是true還是false
如果是true,就執行語句體2
如果是false,就繼續判斷比較表示式3的值,看是true還是false
...
如果都不滿足,就執行語句體n+1。
3、注:關係表示式無論簡單還是複雜,結果必須是boolean型別
if語句控制的語句體如果是一條語句,大括號可以省略,
如果是多條語句,就不能省略。建議永遠不要省略。
一般來說,有左大括號,就沒有分號,有分號,就沒有左大括號。
3、選擇結構(switch語句)
1、格式:
switch(表示式){
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
...
default:
語句體n+1;
break;
}
2、格式解釋說明:
switch:說明這是switch語句。
表示式:可以是byte,short,int,char
JDK5以後可以是列舉
JDK7以後可以是字串
case:後面的值就是要和表示式進行比較的值
break:表示程式到這裡中斷,跳出switch語句
default:如果所有的情況都不匹配,就執行這裡,相當於if語句中的else。
3、執行流程:
A:首先計算表示式的值
B:和每一個case進行匹配,如果有就執行對應的語句體,看到break就結束。
C:如果沒有匹配,就執行default的語句體n+1。
4、注意事項:
A:case後面只能是常量,不能是變數,而且,多個case後面的值不能出現相同的
B:default可以省略嗎?
可以省略,但是不建議,因為它的作用是對不正確的情況給出提示。
特殊情況:
case就可以把值固定。
A,B,C,D
C:break可以省略嗎?
可以省略,但是結果可能不是我們想要的。
會出現一個現象:case穿透。
最終我們建議不要省略
D:default一定要在最後嗎?
不是,可以在任意位置。但是建議在最後。
E:switch語句的結束條件
a:遇到break就結束了
b:執行到末尾就結束了
四、if語句和switch語句各自的場景
A:if
針對boolean型別的判斷
針對一個範圍的判斷
針對幾個常量的判斷
B:switch
針對幾個常量的判斷
五、迴圈結構(for語句)
1、迴圈結構概述
迴圈結構:迴圈語句可以在滿足迴圈條件的情況下,反覆執行某一段程式碼,
這段被重複執行的程式碼被稱為迴圈體語句,當反覆執行這個循
環體時,需要在合適的時候把迴圈判斷條件修改為false,從而
結束迴圈,否則迴圈將一直執行下去,形成死迴圈。
2、迴圈結構有三種迴圈語句:for,while,do...while
3、迴圈語句的組成
A:初始化語句:
一條或者多條語句,這些語句完成一些初始化操作。
B: 判斷條件語句:
這是一個boolean 表示式,這個表示式能決定是否執行迴圈體。
C:迴圈體語句:
這個部分是迴圈體語句,也就是我們要多次做的事情。
D:控制條件語句:
這個部分在一次迴圈體結束後,下一次迴圈判斷條件執行前執行。
通過用於控制迴圈條件中的變數,使得迴圈在合適的時候結束。
4、for迴圈語句格式
A:格式
for(初始化語句;判斷條件語句;控制條件語句){
迴圈體語句;
}
B:執行流程:
a:執行初始化語句
b:執行判斷條件語句
如果這裡是true,就繼續
如果這裡是false,迴圈就結束
c:執行迴圈體語句
d:執行控制條件語句
e:回到b
C:注意事項
a:判斷條件語句無論簡單還是複雜,結果是boolean型別
b:迴圈體語句如果是一條,可以省略大括號,但是不建議
c:有分號就沒有左大括號,有左大括號就沒有分號
e:初始化表示式語句只執行一次
六、迴圈結構(whlie語句)
1、while迴圈語句格式:
A:基本格式
while(判斷條件語句) {
迴圈體語句;
}
B:擴充套件格式
初始化語句;
while(判斷條件語句) {
迴圈體語句;
控制條件語句;
}
C:for迴圈語句和while迴圈語句區別
a:for迴圈語句和while迴圈語句可以等價轉換,但還是有些小區別的。
b:使用區別:
控制條件語句所控制的那個變數,在for迴圈結束後,就不能再被訪問到了,
而while迴圈結束還可以繼續使用,如果你想繼續使用,就用while,否則推薦使用for。
原因是for迴圈結束,該變數就從記憶體中消失,能夠提高記憶體的使用效率。
c:場景區別:
for迴圈適合針對一個範圍判斷進行操作
while迴圈適合判斷次數不明確操作
七、迴圈結構(do...whlie語句)
1、do...while迴圈格式
A:基本格式
do {
迴圈體語句;
}while(判斷條件語句);
B:擴充套件格式:
初始化語句;
do {
迴圈體語句;
控制條件語句;
}while(判斷條件語句);
2、三種迴圈的區別
A:三種迴圈語句其實都可以完成一樣的功能,也就是說可以等價轉換。
B:但還是有小區別的:
a:do…while迴圈至少會執行一次迴圈體。
b: for迴圈和while迴圈只有在條件成立的時候才會去執行迴圈體
C:迴圈使用的注意事項(死迴圈)
A:一定要注意修改控制條件,否則容易出現死迴圈。
B:最簡單的死迴圈格式
a:while(true){...}
b:for(;;){}
八、控制跳轉語句
1、概述;
前面我們已經說過了,Java中的goto是保留字,目前不能使用。雖然沒有goto語句
可以增強程式的安全性,但是也帶來很多不便,為了彌補這個缺陷,Java就提供了break,
continue和return來實現控制語句的跳轉和中斷。
2、控制跳轉語句的分類
A:break:中斷的意思
a:用在迴圈和switch語句中,離開此應用場景無意義。
b:作用
跳出單層迴圈
跳出多層迴圈,需要標籤語句的配合
B:continue:繼續
A:用在迴圈中,離開此應用場景無意義。
B:作用
a:跳出單層迴圈的一次,可以繼續下一次
C:return:返回
A:return關鍵字不是為了跳轉出迴圈體,更常用的功能是結束一個方法,
也就是退出一個方法。跳轉到上層呼叫的方法。
B:一旦遇到return,程式就不會在繼續往後執行。
九、方法
1、方法的概述
假設有一個遊戲程式,程式在執行過程中,要不斷地發射炮彈(植物大戰殭屍)。發射炮彈的動作需要編寫100行的程式碼,
在每次實現發射炮彈的地方都需要重複地編寫這100行程式碼,這樣程式會變得很臃腫,可讀性也非常差。為了解決程式碼
重複編寫的問題,可以將發射炮彈的程式碼提取出來放在一個{}中,併為這段程式碼起個名字,這樣在每次發射炮彈的地方
通過這個名字來呼叫發射炮彈的程式碼就可以了。上述過程中,所提取出來的程式碼可以被看作是程式中定義的一個方法,
程式在需要發射炮彈時呼叫該方法即可。
2、方法的定義及格式
A:方法:就是完成特定功能的程式碼塊。
注意:在很多語言裡面有函式的定義,而在Java中,函式被稱為方法。
B:格式:
修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名2...) {
方法體語句;
return 返回值;
}
C: 方法格式解釋
修飾符:目前就用 public static。後面再詳細講解其他修飾符
返回值型別:就是功能結果的資料型別
方法名:就是起了一個名字,方便我們呼叫該方法。
引數型別:就是引數的資料型別
引數名:就是變數
引數分類:
實參:實際參與運算的資料
形參:方法上定義的,用於接收實際引數的變數
方法體語句:就是完成功能的程式碼塊
return:結束方法
返回值:就是功能的結果,由return帶給呼叫者。
D:兩個明確:
返回值型別:結果的資料型別
引數列表:引數的個數及對應的資料型別
E:方法呼叫
a:有明確返回值的方法
單獨呼叫,沒有意義
輸出呼叫,不是很好,因為我可能需要不結果進行進一步的操作。但是講課一般我就用了。
賦值呼叫,推薦方案
b:void型別修飾的方法
單獨呼叫
F:方法的注意事項
a:方法不呼叫不執行
b:方法之間是平級關係,不能巢狀定義
c:方法定義的時候,引數是用" ,"隔開的
d:方法在呼叫的時候,不用在傳遞資料型別
e:如果方法有明確的返回值型別,就必須有return語句返回
十、方法的過載
1、方法過載概述
在同一個類中,允許存在一個以上的同名方法,只要它們的引數個數或者引數型別不同即可。
2、方法過載特點
與返回值型別無關,只看方法名和引數列表
在呼叫時,虛擬機器通過引數列表的不同來區分同名方法。