Java學習筆記-流程控制
使用者互動Scanner
java.util.Scanner
是 java5 的新特性,我們可以通過Scanner 類來獲取使用者的輸入。
Scanner s = new Scanner(System.in);
通過 Sacanner
類的next()
與nextLine()
方法獲取輸入的字串,在讀取前一般需要使用 hasNext()
與hasNextLine()
判斷是否還有輸入的資料。
next
和nextLine
的區別
next()
1、一定要讀取到有效字元才可以結束輸入。
2、對輸入有效字元之前遇到的空白,next()
方法會自動將其去掉。
3、只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符。
4、next()
不能得到帶有空格的字串。
nextLine()
1、以Enter為結束符,也就是說 nextLine()
方法返回的是輸入回車之前的所有字元。
2、可以獲得空白。
順序結構
if...else...
switch
switch case
語句可以判斷一個變數與一系列值中某個值是否相等,每個值相當於一個分支。
switch(expression){
case value:
// 需要執行的語句
break;
case value:
// 需要執行的語句
break;
default:
// 需要執行的語句
}
switch語句的變數型別可以是:
Byte、short、int
char
。- 從
java se7
開始,支援字串String
型別。 case
標籤必須為字串常量或字面量
使用switch
要注意每個case
分支必須使用break
語句中止;否則會出現case穿透問題。
迴圈結構
while 迴圈
while
是最基本的迴圈, 他的結構為:
while(bool){
//content
}
只要布林表示式為true
迴圈就會一直執行下去。
我們大多數情況是會讓迴圈停止下來的, 我們需要一個讓表示式失效的方式來結束迴圈。
少部分情況需要迴圈一直執行, 比如伺服器的請求響應監聽等。
迴圈條件一直為true就會造成無限迴圈(死迴圈), 我們正常的業務程式設計中應該儘量避免死迴圈。會影響程式效能或者造成程式卡死崩潰。
do...while 迴圈
對於while
語句而言,如果不滿足條件,則不能進入迴圈。但有時候我們需要即使不滿足條件,也至少要執行一次。
do...while
迴圈和while
迴圈相似,不同的是,do...while
迴圈至少會執行一次。
do{
//程式碼語句
}while(布林表示式);
while
和do..while
的區別:
while
先判斷後執行,do...while
是先執行後判斷。do...while
總是保證迴圈體至少會被執行後一次,這是他們的主要差別。
for 迴圈
for
迴圈語句是支援迭代的一種通用結構,是最有效、最靈活的迴圈結構。
for
迴圈執行的次數是在執行前就確定的。語法格式如下
for(初始化;布林表示式;更新){
//程式碼語句
}
增強型for
迴圈
語法格式:
for(宣告語句:表示式){
// 程式碼
}
宣告語句:宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等。
表示式: 表示式是要訪問的陣列名,或者是返回值為陣列的方法。
break & continue
break
在任何迴圈語句的主體部分,均可用break
控制迴圈的流程。break
用於強行退出迴圈,不執行迴圈中剩餘的語句(break
語句也在switch
語句中使用)。
continue
語句用在迴圈語句體中,用於中止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。
關於goto
關鍵字
goto
關鍵字很早就在程式設計語言中出現,儘管goto
仍是java
的一個保留字,但並未在語言中得到正式的使用;java
沒有goto
。然而,在break
和continue
這兩個關鍵字的身上,我們仍然能看出一些goto
的影子---帶標籤的break
和continue
。
標籤是指後面跟著一個冒號的識別符號,例如label:
對java
來說唯一用到的標籤的地方是在迴圈語句之前。而在迴圈之前設定標籤的唯一理由是:我們希望在其中巢狀另一個迴圈,由於break
和continue
關鍵字通常只中斷當前迴圈,若隨同標籤使用,它們就會中斷到標籤的地方。