1. 程序流程控制#
1.1 程序流程控制
- 流程控制語句是用來控制程序中各語句執行順序的語句,可以把語句組
合成能完成一定功能的小邏輯模塊。 - 其流程控制方式採用結構化程序設計中規定的三種基本流程結構,即:
順序結構
分支結構
循環結構
順序結構
程序從上到下逐行地執行,中間沒有任何判斷和跳轉。
分支結構
根據條件,選擇性地執行某段代碼。
有if...else和switch-case兩種分支語句。
循環結構
根據循環條件,重複性地執行某段代碼。
有while、do...while、for三種循環語句。
注:JDK1.5提供了foreach循環,方便的遍歷集合、數組元素。
2. 順序結構#
順序結構
Java中定義成員變量時採用合法的前向引用。如:
public class Test{
int num1 = 12;
int num2 = num1 + 2;
}
錯誤形式:
public class Test{
int num2 = num1 + 2;
int num1 = 12;
}
3. 分支語句 1 :#
3.1 if-else 結構#
if 語句三種格式:
1. if(條件表達式){
執行代碼塊;
}
2. if(條件表達式){
執行代碼塊1;
}
else{
執行代碼塊2;
}
3. if(條件表達式1){
執行代碼塊1;
}
else if (條件表達式2){
執行代碼塊2;
}
......
else{
執行代碼塊n;
}
程序流程控制:if-else 結構#
1.條件表達式必須是布爾表達式(關係表達式或邏輯表達式)、布爾變量語句塊只有一條執行語句時,一對{}可以省略,但建議保留
2. if-else語句結構,根據需要可以嵌套使用
3.當if-else結構是“多選一”時,最後的else是可選的,根據需要可以省略
4.當多個條件是“互斥”關係時,條件判斷語句及執行語句間順序無所謂
5.當多個條件是“包含”關係時,“小上大下/ 子上父下”
if-else 語句應用舉例#
public class AgeTest{
public static void main(String args[]){
int age = 75;
if (age < 0) {
System.out.println("不可能!");
} else if (age > 250) {
System.out.println("是個妖怪!");
} else {
System.out.println("人家芳齡" + age + " ,馬馬乎乎啦!");
}
}
}
3.2 分支語句 2:#
switch-case 結構#
switch(表達式){
case 常量 1 :
語句 1 ;
//break;
case 常量 2 :
語句 2 ;
//break;
......
case 常量N:
語句N;
//break;
default:
語句;
//break;
}
switch 語句應用舉例 1#
public class SwitchTest {
public static void main(String args[]) {
int i = 1;
switch (i) {
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
default:
System.out.println("default");
break;
}
}
}
switch 語句應用舉例 2#
String season = " summer ";
switch (season) {
case "spring":
System.out.println("春暖花開");
break;
case "summer":
System.out.println("夏日炎炎");
break;
case "autumn":
System.out.println("秋高氣爽");
break;
case "winter":
System.out.println("冬雪皑皑");
break;
default:
System.out.println("季節輸入有誤");
break;
}
switch 語句有關規則#
1.switch(表達式)中表達式的值必須是下述幾種類型之一:byte,short,
char,int,枚舉(jdk 5.0),String (jdk 7.0);
2. case子句中的值必須是常量,不能是變量名或不確定的表達式值;
3. 同一個switch語句,所有case子句中的常量值互不相同;
4.break語句用來在執行完一個case分支後使程序跳出switch語句塊;如
果沒有break,程序會順序執行到switch結尾
5. default子句是可選的。同時,位置也是靈活的。當沒有匹配的case時,
執行default
4. 循環結構#
循環結構
在某些條件滿足的情況下,反復執行特定代碼的功能
循環語句分類
for 循環
while 循環
do-while 循環
循環語句的四個組成部分
初始化部分(init_statement)
循環條件部分(test_exp)
循環體部分(body_statement)
迭代部分(alter_statement)
4.1 循環結構 1 :#
for 循環#
語法格式
for(①初始化部分;②循環條件部分;④迭代部分){
③循環體部分;
}
執行過程:
①-②-③-④-②-③-④-②-③-④-.....-②
說明:
②循環條件部分為boolean類型表達式,當值為false時,退出循環
①初始化部分可以聲明多個變量,但必須是同一個類型,用逗號分隔
④可以有多個變量更新,用逗號分隔
for 循環執行演示#
應用舉例
public class ForLoop {
public static void main(String args[]) {
int result = 0;
for (int i = 1; i <= 100; i++) {
result += i;
}
System.out.println("result=" + result);
}
}
4.2 循環構造 2 :#
while 循環#
語法格式
①初始化部分
while(②循環條件部分){
③循環體部分;
④迭代部分;
}
執行過程:
①-②-③-④-②-③-④-②-③-④-...-②
說明:
注意不要忘記聲明④迭代部分。否則,循環將不能結束,變成死循環。
for循環和while循環可以相互轉換
應用舉例
public class WhileLoop {
public static void main(String args[]) {
int result = 0;
int i = 1;
while (i <= 100) {
result += i;
i++;
}
System.out.println("result=" + result);
}
}
4.3 循環結構 3 :#
do-while 循環#
語法格式
①初始化部分;
do{
③循環體部分
④迭代部分
}while(②循環條件部分);
執行過程:
①-③-④-②-③-④-②-③-④-...②
說明:
do-while循環至少執行一次循環體。
應用舉例
public class DoWhileLoop {
public static void main(String args[]) {
int result = 0, i = 1;
do {
result += i;
i++;
} while (i <= 100);
System.out.println("result=" + result);
}
}
4.4 嵌套循環#
嵌套循環 (多重循環)
將一個循環放在另一個循環體內,就形成了嵌套循環。其中,
for ,while ,do...while均可以作為外層循環或內層循環。
實質上,嵌套循環就是把內層循環當成外層循環的循環體。當只有內層循環的
循環條件為false時,才會完全跳出內層循環,才可結束外層的當次循環,開
始下一次的循環。
設外層循環次數為m次,內層為n次,則內層循環體實際上需要執行m*n次。
5. 特殊關鍵字的使用:#
break、continue#
特殊流程控制語句 1#
break 語句
break語句用於終止某個語句塊的執行
{ ......
break;
......
}
break語句出現在多層嵌套的語句塊中時,可以通過標籤指明要終止的是
哪一層語句塊
label 1 : { ......
label 2 : { ......
label 3 : { ......
break label 2 ;
......
}
}
}
特殊流程控制語句 1#
break 語句用法舉例
public class BreakTest{
public static void main(String args[]){
for(int i = 0; i < 10; i++){
if(i == 3)
break;
System.out.println(" i =" + i);
}
System.out.println("Game Over!");
}
}
特殊流程控制語句 2#
continue 語句
continue只能使用在循環結構中
continue語句用於跳過其所在循環語句塊的一次執行,繼續下一次循環
continue語句出現在多層嵌套的循環語句體中時,可以通過標籤指明要跳過的是哪一層循環
continue 語句用法舉例
public class ContinueTest{
public static void main(String args[]){
for(int i = 0; i < 100; i++){
if(i % 10 == 0 )
continue;
System.out.println(i);
}
}
}
附加:特殊流程控制語句 3#
return:並非專門用於結束循環的,它的功能是結束一個方法。
當一個方法執行到一個return語句時,這個方法將被結束。
與break和continue不同的是,return直接結束整個方法,不管
這個return處於多少層循環之內
特殊流程控制語句說明#
break只能用於switch語句和循環語句中。
continue 只能用於循環語句中。
二者功能類似,但continue是終止本次循環,break是終止本層循環。
break、continue之後不能有其他的語句,因為程序永遠不會執行其後的語句。
標號語句必須緊接在循環的頭部。標號語句不能用在非循環語句的前面。
很多語言都有goto語句,goto語句可以隨意將控制轉移到程序中的任意一條
語句上,然後執行它。但使程序容易出錯。Java中的break和continue是不同
於goto的。