1. 程式人生 > 其它 >Java學習筆記-流程控制

Java學習筆記-流程控制

使用者互動Scanner

java.util.Scanner 是 java5 的新特性,我們可以通過Scanner 類來獲取使用者的輸入。

Scanner s = new Scanner(System.in);

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

nextnextLine的區別

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語句的變數型別可以是:

  1. Byte、short、int
    或者char
  2. java se7開始,支援字串String型別。
  3. case 標籤必須為字串常量或字面量

使用switch 要注意每個case分支必須使用break語句中止;否則會出現case穿透問題。

迴圈結構

while 迴圈

while是最基本的迴圈, 他的結構為:

while(bool){
	//content
}

只要布林表示式為true迴圈就會一直執行下去。

我們大多數情況是會讓迴圈停止下來的, 我們需要一個讓表示式失效的方式來結束迴圈。

少部分情況需要迴圈一直執行, 比如伺服器的請求響應監聽等。

迴圈條件一直為true就會造成無限迴圈(死迴圈), 我們正常的業務程式設計中應該儘量避免死迴圈。會影響程式效能或者造成程式卡死崩潰。

do...while 迴圈

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

do...while迴圈和while 迴圈相似,不同的是,do...while迴圈至少會執行一次。

do{
	//程式碼語句
}while(布林表示式);

whiledo..while的區別:

  1. while先判斷後執行,do...while是先執行後判斷。
  2. do...while總是保證迴圈體至少會被執行後一次,這是他們的主要差別。

for 迴圈

for迴圈語句是支援迭代的一種通用結構,是最有效、最靈活的迴圈結構。

for迴圈執行的次數是在執行前就確定的。語法格式如下

for(初始化;布林表示式;更新){
	//程式碼語句
}

增強型for迴圈

語法格式:

for(宣告語句:表示式){
	// 程式碼
}

宣告語句:宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等。

表示式: 表示式是要訪問的陣列名,或者是返回值為陣列的方法。

break & continue

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

continue語句用在迴圈語句體中,用於中止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。

關於goto關鍵字

goto關鍵字很早就在程式設計語言中出現,儘管goto仍是java的一個保留字,但並未在語言中得到正式的使用;java沒有goto。然而,在breakcontinue這兩個關鍵字的身上,我們仍然能看出一些goto的影子---帶標籤的breakcontinue

標籤是指後面跟著一個冒號的識別符號,例如label:

java來說唯一用到的標籤的地方是在迴圈語句之前。而在迴圈之前設定標籤的唯一理由是:我們希望在其中巢狀另一個迴圈,由於breakcontinue關鍵字通常只中斷當前迴圈,若隨同標籤使用,它們就會中斷到標籤的地方。