1. 程式人生 > >Java基礎(流程控制語句、選擇結構、迴圈結構、方法)

Java基礎(流程控制語句、選擇結構、迴圈結構、方法)


一、流程控制語句

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、方法過載特點

與返回值型別無關,只看方法名和引數列表

在呼叫時,虛擬機器通過引數列表的不同來區分同名方法。