1. 程式人生 > >java之控制執行流程

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的例子。

public 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);
	}
}
結果是1 -1 0

在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語句就會執行過程返回迴圈的開頭如果能唄整除就會顯示出現