流程控制語句:
在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。也就是說程式的流程對運作結果有直接的影響。是以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實作我們要完成的功能。
流程控制語句分類
-
- 順序結構
- 選擇結構
- 循環結構
順序結構:
是程式中最簡單最基本的流程控制,沒有特定的文法結構,按照代碼的先後順序,依次執行,程式中大多數的代碼都是這樣執行的。總的來說:寫在前面的先執行,寫在後面的後執行.順序結構就不寫代碼示範了。
選擇結構:
也被稱為分支結構。 選擇結構有特定的文法規則,代碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,是以産生選擇,按照不同的選擇執行不同的代碼。 Java語言提供了兩種選擇結構語句
(1)if語句
if語句第一種格式:
if(關系表達式) {
語句體
}
1 package flowController;
2
3 public class Test {
4 public static void main(String[] args) {
5 int num=10;
6 if(num>5){
7 System.out.println("num>5");
8 }11 }
12 }
if語句第二種格式:
if(關系表達式) {
語句體1;
}else {
語句體2;
}
1 package flowController;
2
3 public class Test {
4 public static void main(String[] args) {
5 int num=10;
6 if(num>5){
7 System.out.println("num>5");
8 }else{
9 System.out.println("num<5");
10 }
11 }
12 }
if語句後面跟一個邏輯判斷,判斷之後如果成立,就執行下面的語句體。
如果執行了if下面的語句體後,則不會執行else,如果執行了else,則if後面的判斷肯定不會成立。
當然,我們也能進行多個if嵌套
1 package flowController;
2
3 public class Test {
4 public static void main(String[] args) {
5 int num=10;
6 if(num>5){
7 System.out.println("num>5");
8 if(num>8){
9 System.out.println("num>8");
10 if(num>9){
11 System.out.println("num>9");
12 }
13 }
14 }else{
15 System.out.println("num<5");
16 }
17 }
18 }
結果:

(2)switch語句
switch(表達式) {
case 值1: 語句體1;
break;
case 值2: 語句體2;
break;
… default: 語句體n+1;
break;
}
執行流程 :
首先計算出表達式的值 其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。 最後,如果所有的case都和表達式的值不比對,就會執行default語句體部分,然後程式結束掉。
1 package flowController;
2
3 public class Test2 {
4
5 public static void main(String[] args) {
6 // TODO Auto-generated method stub
7 int a=5;
8 switch (a) {
9 case 1:
10 System.out.println("a=1");
11 break;
12 case 2:
13 System.out.println("a=2");
14 break;
15 case 3:
16 System.out.println("a=3");
17 break;
18 case 4:
19 System.out.println("a=4");
20 break;
21 case 5:
22 System.out.println("a=5");
23 break;
24 default:
25 System.out.println("a不确定");
26 break;
27 }
28 }
29 }
if 和 switch的差別
switch建議判斷固定值的時候用
if建議判斷區間或範圍的時候用
用switch能做的,用if都能做,單反過來則不行
循環結構:
有很多操作,用循環操作可以很好的解決。
(1)for循環:
第一中:
它的一般形式為: for(<初始化>; <條件表達式>; <增量>) 語句; 初始化總是一個指派語句, 它用來給循環控制變量賦初值; 條件表達式是一個關系表達式, 它決定什麼時候退出循環; 增量定義循環控制變量每循環一次後 按什麼方式變化。
1 package flowController;
2
3 public class Test3 {
4 public static void main(String[] args) {
5 int [] nums={12,10,58,13,4,33,66,32};
6 for (int i = 0; i < nums.length; i++) {
7 System.out.println(nums[i]);
8 }
9 }
10 }
執行流程:
A:執行初始化語句
B:執行判斷條件語句,看其結果是true還是false
如果是false,循環結束。
如果是true,繼續執行。
C:執行循環體語句
D:執行控制條件語句
E:回到B繼續
第二種:
1 package flowController;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 public class Test3 {
7 public static void main(String[] args) {
8 List<Student> list = new ArrayList<Student>();
9 Student s1 = new Student("aa");
10 Student s2 = new Student("bb");
11 Student s3 = new Student("cc");
12 Student s4 = new Student("dd");
13 list.add(s1);list.add(s2);list.add(s3);list.add(s4);
14 for (Student student : list) {
15 System.out.println(student.getName());
16 }
17 }
18 }
這種能直接擷取到集合裡面的對象,友善周遊;
(2)while循環:
while(判 斷條件語句) {
循環體語句;
}
while循環和for循環可以等價轉換,但還是有些小差別的:
for循環适合針對一個範圍判斷進行操作
while循環适合判斷次數不明确操作
執行流程:
先進行條件判斷
成立執行循環體,不成立不進行循環;
執行後再判斷成立不成立;
1 package flowController;
2
3 public class Test4 {
4 public static void main(String[] args) {
5 int n=20;
6 while (n>1) {
7 System.out.println(n);
8 n--;
9 }
10 }
11 }
while循環一定要做好退出循環的條件,要不很容易造成死循環;
(3)do.....while循環:
do {
循環體語句;
}while((判 斷條件語句);
先執行循環體,
再進行條件判斷
成立再執行循環體,不成立退出
是以:do…while循環至少會執行一次循環體。
1 package flowController;
2
3 public class Test4 {
4 public static void main(String[] args) {
5 int n=20;
6 do {
7 System.out.println(n);
8 n--;
9 } while (n>1);
10 }
11 }
跳出控制語句
- break 中斷
- continue 繼續
- return 傳回 4
break:直接跳出循環:
1 package flowController;
2
3 public class Test5 {
4
5 public static void main(String[] args) {
6 // TODO Auto-generated method stub
7 for (int i = 0; i < 20; i++) {
8 System.out.println(i);
9 if(i==4){
10 break;
11 }
12 }
13 }
14
15 }
例如當 i==4之後 直接退出循環;
continue:退出本次循環
1 package flowController;
2
3 public class Test5 {
4
5 public static void main(String[] args) {
6 // TODO Auto-generated method stub
7 for (int i = 0; i < 20; i++) {
8 if(i%2==0){
9 continue;
10 }
11 System.out.println(i);
12 }
13 }
14
15 }
例如:當i%2==0.直接退出本次循環,進入下次循環;
return :
return關鍵字不是為了跳轉出循環體,更常用的功能是結束一個方法,也就是退出一個方法。跳轉到上層調用的方法。
1 package flowController;
2
3 public class Test6 {
4
5 public static void main(String[] args) {
6 // TODO Auto-generated method stub
7 int n=getnum();
8 System.out.println(n);
9 }
10
11 public static int getnum(){
12 int i=0;
13 return i;
14 }
15 }
好了 ,關于流程控制就說那麼多;
歡迎大家一起說出自己的想法。