天天看點

課堂筆記-Java流程控制

使用者互動Scanner

Scanner對象

java.util.Scanner是Java5的新特性,可以使用Scanner類來擷取使用者的輸入。

基本文法:

通過Scanner類的next()與nextLine()方法擷取輸入的字元串,在讀取前一般需要使用hasNext()與hasNextLine()判斷是否還有輸入的資料

next():

1.一定要讀取到有效字元後才可以結束輸入。
2.對輸入有效字元之前遇到的空白,next()方法會自動将其去掉。
3.隻有輸入有效字元後才将其後面輸入的空白作為分隔符或者結束符。
4.next()不能得到帶有空格的字元串。
           

nextLine():

1.以Enter為結束符,也就是說nextLine()方法傳回的是輸入回車之前的所有字元
2.可以獲得空白
           

順序結構

Java的基本結構就是順序結構,除非特别指明,否則就按照順序一句一句執行

順序結構是最簡單的算法結構

語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若幹個依次執行的處理步驟組成的,它是任何一個算法都離不開的一直基本算法結構。

選擇結構

if單選擇結構

文法:

if(布爾表達式){
	//如果布爾表達式為true将執行的語句
}
           

if雙選擇結構

文法:

if(布爾表達式){
	//如果布爾表達式為true将執行的語句
}else{
    //如果布爾表達式為false
}
           

if多選擇結構

文法:

if(布爾表達式1){
	//如果布爾表達式1為true将執行的語句
}else if(布爾表達式2){
    //如果布爾表達式2為true将執行的語句
}else if(布爾表達式3){
    //如果布爾表達式3為true将執行的語句
}else{
    //如果布爾表達式都不為true将執行的語句 
}
           

注意:

if 語句至多有 1 個 else 語句, else 語句在所有的 else if語 句之後
if 語句可以有若幹個 else if 語句,他們必須在 else 語句之前
一旦其中一個 else if 語句為true,其他的 else if 以及 else 語句都将跳過執行
           

嵌套的if結構

文法:

if(布爾表達式1){
	//如果布爾表達式1為true将執行的語句
    if(布爾表達式2){
	//如果布爾表達式2為true将執行的語句
    }
}
           

switch多選擇結構

文法:

switch(expression){
    case value:
    //語句
    break;//可選
    case value:
    //語句
    break;//可選
    //你可以有任意數量的case語句
    default://可選
    //語句
}
           

switch語句在的變量類型可以是:

byte、short、int或char
 從Java SE 7開始,switch支援字元串String了
 同時case标簽必須為字元串常量或字面量
           

循環結構

while循環

結構:

while(布爾表達式){
    //循環内容
}
           
隻要布爾表達式為true,循環就會一直執行下去。
我們大多數情況會讓循環停止下來的,我們需要一個讓表達式失效的方式來結束循環。
收不分情況需要循環一直執行,比如伺服器的請求響應監聽等。
循環條件一直為true就會造成無限循環【死循環】,我們正常的業務程式設計中應該盡量避免死循環,會影響程式性能或者造成程式卡死奔潰
           

do…while循環

對于while語句而言,如果不滿足條件,則不能進入循環。但有時候我們需要即使不滿足條件,也至少執行一次。

do…while循環和while循環相似,不同的是,do…while循環至少會執行一次。

do{
    //代碼語句
}while(布爾表達式);
           

do…while和while的差別:

while先判斷後執行。do...while是先執行後判斷
do...while總是保證循環體會被至少執行一次。
           

for循環

for循環語句是支援疊代的一種通用結構,是最有效、最靈活的循環結構

for循環的執行次數在執行前就确定的。

文法:

for(初始化;布爾表達式;更新){
    //代碼語句
}
           

注意:

最先執行初始化步驟,可以聲明一種類型,但可初始化一個或多個循環控制變量,也可以是空語句
然後,檢測布爾表達式的值,如果為true,循環體被執行。如果為false嘛,循環終止,開始執行循環體後面的語句
執行一次循環後,更新循環控制變量(疊代因子控制循環變量的增減)。
再次檢測布爾表達式,循環執行上面的過程
           

增強型for循環

在Java5中引入了一直主要用于數組的增強型for循環

文法:

for(聲明語句:表達式){
    //代碼句子
}
           

聲明語句:聲明新的局部變量,該變量的類型必須和數組元素的類型比對。其作用域限定在循環語句塊,其值與此時數組元素的值相等。

表達式:表達式是要通路的數組名,或者是傳回值為數組的方法。

break & continue

break在任何循環語句的主體部分,均可用break控制循環的流程。break用于強行退出循環,不執行循環中剩餘的語句。(break語句也在switch語句中使用)

continue語句用在循環語句體中,用于終止某次循環過程,即跳過循環體中尚未執行的語句,接着進行下一次是否執行循環的判定。

關于goto關鍵字
	1.goto關鍵字很早就在程式設計語言中出現。盡管goto仍是Java的一個保留字,但并未在語言中得到正式使用;Java沒有goto。然而,在break和continue這兩個關鍵字的身上,我們仍然能看出一些goto的影子---帶标簽的break和continue。
	2.“标簽”是指後面跟一個冒号的辨別符,例如: label:
	3.對Java來說唯一用到标簽的地方是在循環語句之前。而在循環之前設定标簽的唯一理由是:我們希望在其中嵌套另一個循環,由于break和continue關鍵字通常隻中斷目前循環,但若随同标簽使用,它們就會中斷到存在标簽的地方。