JavaCore流程控制

分支結構
1.if-else條件判斷結構
1.1.
結構一:
if(條件表達式){
執行表達式
}

結構二:二選一
if(條件表達式){
執行表達式1
}else{
執行表達式2
}

結構三:n選一
if(條件表達式){
執行表達式1
}else if(條件表達式){
執行表達式2
}else if(條件表達式){
執行表達式3
}

else{
執行表達式n
}

1.2.說明:

  1. else 結構是可選的。
  2. 針對於條件表達式:

    如果多個條件表達式之間是“互斥”關係(或沒有交集的關係),哪個判斷和執行語句聲明在上面還是下面,無所謂。
    如果多個條件表達式之間有交集的關係,需要根據實際情況,考慮清楚應該將哪個結構聲明在上面。
    如果多個條件表達式之間有包含的關係,通常情況下,需要將範圍小的聲明在範圍大的上面。否則,範圍小的就沒機會執行了。

  3. if-else結構是可以相互嵌套的。
  4. 如果if-else結構中的執行語句只有一行時,對應的一對{}可以省略的。但是,不建議大家省略。

2.switch-case選擇結構
switch(表達式){
case 常量1:
執行語句1;
//break;
case 常量2:
執行語句2;
//break;

default:
執行語句n;
//break;
}
2.說明:
① 根據switch表達式中的值,依次匹配各個case中的常量。一旦匹配成功,則進入相應case結構中,調用其執行語句。
當調用完執行語句以後,則仍然繼續向下執行其他case結構中的執行語句,直到遇到break關鍵字或此switch-case結構
末尾結束爲止。
② break,可以使用在switch-case結構中,表示一旦執行到此關鍵字,就跳出switch-case結構
③ switch結構中的表達式,只能是如下的6種數據類型之一:
byte 、short、char、int、枚舉類型(JDK5.0新增)、String類型(JDK7.0新增)
④ case 之後只能聲明常量。不能聲明範圍。
⑤ break關鍵字是可選的。
⑥ default:相當於if-else結構中的else.
default結構是可選的,而且位置是靈活的。
3.如果switch-case結構中的多個case的執行語句相同,則可以考慮進行合併。
4.break在switch-case中是可選的

循環結構
1.循環結構的四要素
① 初始化條件
② 循環條件 —>是boolean類型
③ 循環體
④ 迭代條件
說明:通常情況下,循環結束都是因爲②中循環條件返回false了。

2.三種循環結構:
2.1 for循環結構
for(①;②;④){

}
執行過程:① - ② - ③ - ④ - ② - ③ - ④ - … - ②
2.2 while循環結構

while(②){
③;
④;
}
執行過程:① - ② - ③ - ④ - ② - ③ - ④ - … - ②
說明:
寫while循環千萬小心不要丟了迭代條件。一旦丟了,就可能導致死循環!

for和while循環總結:

  1. 開發中,基本上我們都會從for、while中進行選擇,實現循環結構。
  2. for循環和while循環是可以相互轉換的!
    區別:for循環和while循環的初始化條件部分的作用範圍不同。
  3. 我們寫程序,要避免出現死循環。
    2.3 do-while循環結構

    do{
    ③;
    ④;
    }while(②);
    執行過程:① - ③ - ④ - ② - ③ - ④ - … - ②

說明:
1.do-while循環至少會執行一次循環體!
2.開發中,使用for和while更多一些。較少使用do-while

3.“無限循環”結構: while(true) 或 for(;😉
總結:如何結束一個循環結構?
方式一:當循環條件是false時
方式二:在循環體中,執行break

4.嵌套循環
1.嵌套循環:將一個循環結構A聲明在另一個循環結構B的循環體中,就構成了嵌套循環
內層循環:循環結構A
外層循環:循環結構B
2.說明:
① 內層循環結構遍歷一遍,只相當於外層循環循環體執行了一次
② 假設外層循環需要執行m次,內層循環需要執行n次。此時內層循環的循環體一共執行了m * n次
③ 外層循環控制行數,內層循環控制列數
【典型練習】
//練習一:
/*
******
******
******
******
/
for(int j = 1;j <= 4;j++ ){
for(int i = 1;i <= 6;i++){
System.out.print(’
’);
}
System.out.println();
}
//練習二:
/* i(行號) j(*的個數)
* 1 1
** 2 2
*** 3 3
**** 4 4
***** 5 5
*/

	for(int i = 1;i <= 5;i++){//控制行數
		for(int j = 1;j <= i;j++){//控制列數
			System.out.print("*");
		
		}
		System.out.println();
	}
	//練習三:九九乘法表
	//練習四:100以內的質數

補充:衡量一個功能代碼的優劣:
1.正確性
2.可讀性
3.健壯性
4.高效率與低存儲:時間複雜度 、空間複雜度 (衡量算法的好壞)

如何理解流程控制的練習:
流程控制結構的使用 + 算法邏輯

break和continue關鍵字的使用
使用範圍 循環中使用的作用(不同點) 相同點
break: switch-case
循環結構中 結束當前循環 關鍵字後面不能聲明執行語句

continue: 循環結構中 結束當次循環 關鍵字後面不能聲明執行語句

補充:帶標籤的break和continue的使用

return在方法中講。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章