java之控制執行流程
流程控制
就像有知覺的生物一樣,程式必須在執行過程中控制它的世界,並作出選擇,在java中你要使用執行控制語句來做出選擇
java使用了C的所有流程控制語句,所以如果你以前用過C或者C++程式設計,那麼應該非常熟悉了。大多數過程型程式語言都具有某些形式的控制語句,它們通常在各種語言間是交迭的。在java中,設計的關鍵字包括if-else,while,do-while,for,return,break,以及選擇語句switch。
1.1 true合false
所有條件語句都利用表示式的真或者假來決定執行路徑。例:“a==b”使用“==”來判斷a的值是否等於b。該表示式返回true或者
1.2if-else
if-else語句是控制流程的最基本的形式。其中的else是可選的,所以可按下述兩種形式來使用if
注意:布林表示式必須產生一個布林結果
if(boolean-expression){
//程式碼
}
或者
if(boolean-expression){
//程式碼
}else{
//程式碼
}
下面一個test()方法是一個if-else的例子。
結果是1 -1 0public class Test { static int result = 0; static void test(int testval,int target){ if(testval >target){ result =+1; }else if(testval<target){ result = -1; }else{ result=0; } } public static void main(String[] args) { test(10,5); System.out.println(result); test(5,10); System.out.println(result); test(5,5); System.out.println(result); } }
在test()的中間部分,可以看到一個"else if" ,那並非新的關鍵字,而僅僅只是一個else後面緊跟另一個新的if語句。
注意:儘管java與它之前產生的C,C++一樣,都是格式自由的語言,但是習慣上還是將流程控制語句的主體部分縮排排列,可以有效的提高程式碼的可讀性
1.3 迭代
while,do-while合for用來控制迴圈,有時將他們劃分為迭代語句(iteration statement)。語句會重複執行,直到起控制作用的布林表示式(Booleanexpression) 得到“假”的結果為止。
while迴圈結構如下: 再迴圈開始的時候,會計算一次布林表示式的值,而在語句的下一次迭代開始前會再次計算一次
wile(布林表示式){
程式碼塊
}
do-while迴圈結構如下:while合do-while的唯一區別就是do-while中的語句至少會執行一次,即便布林表示式第一次計算為false。而while在第一次計算為false的時候就已經結束迴圈了
do{
程式碼塊
}while(布林表示式)
for迴圈結構如下:for迴圈可能是最常用的迭代形式,在第一次迭代之前要進行初始化。隨後他會進行條件測試,而且在每一次迭代結束的時候會進行步進
for(初始化表示式;布林表示式;補進運算){
程式碼塊
}
1.4Foreache語法:在java se5已用了一種新的更加簡介的for語法用於陣列或者容器的迭代。看下面這個程式碼例子
public class Test {
static float f[] = new float[]{5.1f,5.3f};
public static void main(String[] args) {
for(float x: f){
System.out.println(flo);
}
}
}
在for(float x:f){}在這條語句定義了一個float型別的變數x,繼而將每一個f的元素x賦值給x,每次迴圈進行步進是for迴圈的簡化版
1.5 reutrn
在java中有多個關鍵字表示無條件分支,它們只是表示這個分支需任何測試即可發生。這些關鍵詞包括 return , break, continue
return關鍵字有兩方面用途:一方面制定一個方法返回什麼值,另一方面它會導致當前的方法退出,並返回那個值看下面這個例子
public class Test {
static int result = 0;
static int test(int testval,int target){
if(testval >target){
return 1;
}else if(testval<target){
return -1;
}else{
return 0;
}
}
public static void main(String[] args) {
System.out.println(test(10,5));
System.out.println(test(5,10));
System.out.println(test(5,5));
}
}
結果:1,-1,0
注:如果方法是void的那麼會有一個隱式return
1.6 break 合continue
在任何迭代語句的主體部分,都可以使用breank合continue控制迴圈流程。其中,break用於強制退出迴圈,不執行迴圈中剩餘的語句。而continue則停止執行當前的迭代,然後退回迴圈起始處開始下一次迭代
下面這個例子來演示break合continue在for合while中的例子
public class BreakAndContinue {
public static void main(String[] args) {
for(int i =0;i<100;i++){
if(i==74){
break;//如果i==74就停止迴圈
}
if(i%9 != 0){
continue;//如果i被9取餘數 !=0那麼就結束本次迴圈執行下次迴圈
}
System.out.print(i+" ");
}
}
}
結果:0 9 18 27 36 45 54 63 72
在這個for迴圈中,i的值永遠不會達到100,因為一旦i達到74,break語句就會中斷迴圈,通常只只有在不知道中斷條件何時滿足時,才玉簫這樣使用break。只要i不能被9整除continue語句就會執行過程返回迴圈的開頭如果能唄整除就會顯示出現