[TOC]
# 流程控制
* 順序結構
* 判斷(分支選擇)結構
* 循環結構
## 順序結構
程序是一個自上而下運行的過程。
## 分支選擇結構
Java 中的分支選擇結構有 if 結構、switch 結構
### if 結構
具備三種類型的結構表現形式
* **形式一:**
```java
if (logic expression) {
statement;
}
```
```java
int age = 20;
if (age > 18) {
String name = "Tom";
System.out.println("我叫" + name + ",已經" + age + "歲了,我成年了!");
}
```
* **形式二:**
```java
if (logic expression) {
statement;
} else {
statement;
}
```
```java
int age = 16;
if (age > 18) {
String name = "Tom";
System.out.println("我叫" + name + ",已經" + age + "歲了,我成年了!");
} else {
System.out.println("我還未成年!");
}
```
* **形式三:**
```java
if (logic expression) {
statement;
} else if (logic expression) {
statement;
} else {
statement;
}
```
```java
if (age >= 0 && age <= 10) {
System.out.println("少年");
} else if (age <= 18) {
System.out.println("青少年");
} else if (age <= 30) {
System.out.println("青年");
} else if (age <= 50) {
System.out.println("中年");
} else {
System.out.println("老年");
}
```
### switch 結構
swtich 語句是由控制表達式和多個 case 標簽塊組成。在控制表達式中,只允許出現 byte、short、int、char 四種基礎數據類型,在 JDK1.7 以后,支持 String 類型的控制表達式。
```java
switch (expression) {
case condition1 : {
statement;
break;
}
case condition2 : {
statement;
break;
}
default : {
statement;
break;
}
}
```
```java
String color = "red";
switch (color) {
case "red": {
System.out.println("紅色");
break;
}
case "blue": {
System.out.println("藍色");
break;
}
case "green": {
System.out.println("綠色");
break;
}
default: {
System.out.println("沒有找到");
break;
}
}
```
> 在 case 中要加入 break 關鍵字跳出;
>
> 在實際的開發中,我們一般使用 if - else 結構替代 switch。swtich 結構應用的較少。
## 循環結構
循環語句可以在滿足循環條件的情況下,反復執行某一段代碼。
被重復執行的代碼叫做循環體。
循環語句可能包含的部分有:
* 初始化語句(init\_statement):一條或多條語句,這些語句用于完成一些初始化的工作。
* 循環條件(test\_expression):是一個 boolean 類型的表達式,這個表達式決定是否繼續執行循環體。
* 循環體(body\_statement):如果條件允許,循環體會被反復執行。
* 迭代語句(iteration\_statement):在一次循環體執行結束后,對循環體條件進行求值,通常用于控制循環條件中的變量,使得循環在合適的時候結束。
### while 結構
```java
(init_statement);
while (test_expression) {
body_statement;
[iteration_statement];
}
```
```java
int sum = 0;
int i = 1;
while (i <= 10) {
sum = sum + i;
i++;
}
System.out.println(sum); // 55
```
### do-while 結構
```java
(init_statement);
do {
body_statement;
[iteration_statement];
} while (test_expression)
```
> 無論如何都會執行一次循環體內容
```java
int i = 1;
int sum = 0;
do {
sum += i++;
// sum = sum + i;
// i = i + 1;
} while (i <= 10);
System.out.println(sum); // 11
```
### for 循環
語法:
```java
for ([init_statement]; test_expression; [iteration_statement]) {
body_statement;
}
```
實例
```java
int sum = 0;
for (int i = 1; i <= 28; i++) {
sum = sum + i;
}
System.out.println(sum);
```
> 在實際的開發中,對于已知循環次數的遍歷,一般使用 for 循環。而且 for 循環的應用場景要比 while 循環多。
### 控制循環結構
**break**:在循環體中,使用 break 關鍵字跳出**整個循環**。
```java
int flag = 6;
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum = sum + i;
if (i == flag) {
break;
}
}
System.out.println(sum); // 21
```
**continue**:在循環體中,使用 continue 跳出**本次循環**,循環還會繼續執行。
```java
int sum = 0;
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue;
}
sum = sum + i;
}
System.out.println(sum); // 25
```