流程控制語句:
在一個程序執行的過程中,各條語句的執行順序對程序的結果是有直接影響的。也就是說程序的流程對運行結果有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現我們要完成的功能。
流程控制語句分類
- 順序結構
- 選擇結構
- 循環結構
順序結構:
是程序中最簡單最基本的流程控制,沒有特定的語法結構,按照代碼的先后順序,依次執行,程序中大多數的代碼都是這樣執行的。總的來說:寫在前面的先執行,寫在后面的后執行.順序結構就不寫代碼演示了。
選擇結構:
也被稱為分支結構。 選擇結構有特定的語法規則,代碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,所以產生選擇,按照不同的選擇執行不同的代碼。 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 }

好了 ,關於流程控制就說那么多;
