java的流程控制結構有三種:順序、選擇、循環 java
Java的基本結構就是順序結構,除非特別指明,不然就是按照順序一句一句執行。
順序結構是最簡單的算法結構。
語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若干個依次執行的處理步驟組成的,它是任何一個算法都離不開的一種基本算法結構。算法
咱們不少時候須要去判斷一個東西是否可行,而後咱們纔去執行,這樣一個過程在程序中用選擇語句來表達。數組
在java中,選擇結構分爲 if-else 語句和 switch 語句。ide
首先咱們來看下if-else語句:3d
if單選擇結構:
語法:code
if(布爾類型表達式){ 語句或語句塊 }
if語句(單支)的執行流程: 首先判斷布爾類型表達式看它的結果是false仍是true 若是是true執行{}裏面的方法體內容 若是是flase就不執行{}裏面的方法體內容,程序日後加載
例如:blog
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("請輸入內容:"); String s = scanner.nextLine(); if (s.equals("Hello")) System.out.println(s); scanner.close(); }
在這裏的s.equals的意思是判斷s所表示的字符串是否和後面的Hello相同,當判斷字符串時儘可能別用 == 。
if雙選擇結構:
語法:內存
if(布爾類型表達式){ 語句或語句塊 }else{ 語句或語句塊 }
例如:作用域
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("請輸入:"); int score = scanner.nextInt(); if(score>=60){ System.out.println("及格"); }else{ System.out.println("不及格"); } scanner.close(); }
if多選擇結構:字符串
不少選擇不只僅只有兩個,因此要用多選擇結構處理。 語法: if(布爾表達式1){ //若是布爾表達式1爲true將執行的語句 }else if(布爾表達式2){ //若是布爾表達式2爲true將執行的語句 }else if(布爾表達式3){ //若是布爾表達式3爲true將執行的語句 }else{ //若是以上布爾表達式都不爲true將執行的語句 }
備註:
1.在多支語句中,這多種情形是一種互斥關係,非你即我,只有一種情形會成立,程序也只會執行條件裏面的一種代碼。
2.在多支語句中,若是最後一種情形它包含了它以上情形以外的全部情形,那麼該種情形也能夠這樣表達,省略if(條件)。
例如:
int per = 76; if(per == 100){ System.out.println("進1v1名師輔導班"); }else if(per >= 90 && per < 100){ System.out.println("進狀元班"); }else if (per >= 80 && per < 90){ System.out.println("進尖子班"); }else if (per >= 70 && per < 80){ System.out.println("進珍珠班"); }else if (per >= 60 && per < 70){ System.out.println("進普通班"); }else if(per < 60){ System.out.println("不錄取"); }
if嵌套結構:
在一個if裏再加一個if。
語法:
if(布爾類型表達式1){ //若是布爾表達式1爲true將執行的語句 if(布爾類型表達式2){ //若是布爾表達式2爲true將執行的語句 語句或語句塊 }else{ //若是布爾表達式2爲false將執行的語句 語句或語句塊 } }else{ //若是布爾表達式1爲false將執行的語句 if(布爾類型表達式2){ //若是布爾表達式2爲true將執行的語句 語句或語句塊 }else{ //若是布爾表達式2爲false將執行的語句 語句或語句塊 } }
例如:
String sex = "男"; double money = 18000; if (sex.equals("男")) { if (money >= 20000) { System.out.println("女生眼中的高富帥"); } else if(money < 8000){ System.out.println("女生眼中的屌絲"); } }else if (sex.equals("女")){ if (money >= 12000){ System.out.println("男生眼中的白富美"); }else if (money <= 3000){ System.out.println("男生眼中的女屌絲"); } }
switch多選擇結構:
switch case語句判斷一個變量與一系列值中某個值是否相等,每一個值稱爲一個分支。
switch語句重點變量類型能夠是:
byte、short、int、String或者char
case標籤必須爲字符串常量或字面量
語法:
int N = 2; switch (N){ case 2: System.out.println("2"); break; case 's': System.out.println("s"); break; default: System.out.println("wrong"); }
注意:
1)switch中表達式的返回值只能是 int,byte,char,short,枚舉,JDK1.7以後能夠接收字符串類型;
2)case子句中的值必須是常量,且不能重複;
3)default無關緊要
4)break做爲某一個case代碼段的結束句,使其跳出程序。
5)case 情形之間也是一種互斥關係,非你即我。
case穿透性
在switch語句,若是case後面的break省略掉,將會出現穿透現象。不會判斷後面的case情形值,直接加載後面的case方法體內容
例如:
public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("今天星期幾了?"); int week = scan.nextInt(); switch(week){ case 1: System.out.println("Monday"); break; case 2: System.out.println("Tuesday"); break; case 3: System.out.println("Wednesday"); break; case 4: System.out.println("Thursday"); break; case 5: System.out.println("Friday"); break; case 6: System.out.println("Saturday"); break; case 7: System.out.println("Sunday"); break; default: System.out.println("Sorry,i don't know!"); } }
順序結構的程序語句只能 被執行一次。若是你要一樣的操做執行屢次,就須要使用循環結構。
循環結構組成部分通常分爲4個部分:
1.初始化語句:在循環最初開始時,須要定義一個初始化的變量,並且只會定義一次。
2.條件判斷(結束條件):若是條件知足,進入循環,若是條件不知足,則退出循環
3.循環體內容:重複要作的事情內容,可能包含不少條語句(事情是有規律的)
4.迭代語句(步進語句):每次循環結束以後須要執行步進語句(迭代語句),對初始化變量作步進(迭代)
初始化語句必定和條件判斷表達式緊密結合 迭代語句和條件判斷表達式也是緊密結合 迭代語句是對初始語句中定義的初始化
java中有三種主要的循環結構:while循環 do-while循環 for循環
1.while循環
while循環不知道循環次數。先判斷,再循環。經常使用死循環。
while是最基本的循環,它的語法爲:
while(循環條件) { 循環語句 } 只要循環條件的結果爲真,就執行循環語句
注意:必定要有退出循環的條件,不然會造成無限循環
例如:
public class Test { public static void main(String args[]) { int x = 10; while (x < 20) { System.out.print("value of x :" + x); x++; System.out.print("\n"); } } }
注意:必定要有退出循環的條件,不然會造成無限循環
例如:
public class Test { public static void main(String args[]) { int x = 10; while (x < 20) { System.out.print("value of x :" + x); x++; System.out.print("\n"); } } } public class Test { public static void main(String args[]) { int x = 10; while (x < 20) { System.out.print("value of x :" + x); x++; System.out.print("\n"); } } }
以上實例編譯運行結構以下:
value of x : 10 value of x : 11 ... value of x : 19
2.do…while循環
對於while語句而言,若是不知足條件,則不能進入循環。但有時候咱們須要即便不知足條件,也至少 執行一次。
do…while循環和while循環相同,不一樣的是,
do…while循環至少會執行一次。
do…while循環的語法爲:
do { 執行語句 } while(循環條件);
注意:布爾表達式在循環體的後面,因此語句塊在檢測布爾表達式以前已經執行了。若是布爾表達式值爲true,則語句塊一直執行,直到布爾表達式的值爲false。
例如:
public class Test { public static void main(Staing args[]) { int x = 10; do { System.out.print("value of x :" + x); x++; System.out.print("\n"); } while (x < 20); } }
以上實例編譯運行結果以下:
value of x : 10 ... value of x :19
3.for循環
雖然全部循環結構均可以用while或者do…while表示,但java提供了另外一種語句(for循環),使一些循環結構變得更簡單。
for循環的流程:
for循環的語法爲:
for(初始化語句;判斷條件語句;控制條件語句){ 循環體語句; }
註釋:(1)初始化語句:一條或者多條語句,這些語句完成一些初始化操做
(2)判斷條件語句:這是一個boolean 表達式,這個表達式能決定是否執行循環體
(3)循環體語句:這個部分是循環體語句,也就是咱們要屢次作的事情
(4)控制條件語句:這個部分在一次循環體結束後,下一次循環判斷條件執行前執行。經過用於控制循 環條件中的變量,使得循環在合適的時候結束
例如:
public class Test{ public static void main (Staing args[ ]){ for(int x=10;x<20;x=x+1){ System.out.print("value of x :"+x); System.out.print("\n"); } } }
編譯運行結果以下:
value of x :10 ... value of x :19
for和while的區別:
1.控制語句中所涉及到的循環變量,當for循環結束後,定義的循環變量不能再被訪問,而while循環結束後依然能夠被訪問到。若是不繼續使用循環變量,建議使用for循環,由於for循環結束後,循環變量就會從內存中消失,從而可以提升內存的使用效率
2.在已知循環次數的狀況下,建議使用for循環,當循環次數不肯定時使用while循環。
4.加強for循環
加強for循環的語法
for(聲明語句:表達式){ //代碼句子 }
聲明語句:聲明新的局部變量,該變量的類型必須和數組元素的類型匹配。其做用域限定在循環語句塊,其值與此時數組元素的值相等。
表達式:表達式是要訪問的數組名,或者是返回值爲數組的方法。
例如:
public class test { public static void main(String args[]) { int[] numbers = { 10, 20, 30, 40, 50 }; for (int x : numbers) { System.out.print(x); System.out.print(","); } System.out.print("\n"); String[] names = { "James", "Larry", "Tom", "Lacy" }; for (String name : names) { System.out.print(name); System.out.print(","); } } }
編譯運行以下:
10,20,30,40,50, James,Larry,Tom,Lacy,
break關鍵字:
break主要用在循環語句或者switch語句中,用來跳出整個語句塊。 break跳出最裏面的循環,而且繼續執行該循環下面的語句。
break實例:
public class Test { public static void main(String args[]) { int [] numbers = {10, 20, 30, 40, 50}; for(int x : numbers ) { // x 等於 30 時跳出循環 if( x == 30 ) { break; } System.out.print( x ); System.out.print("\n"); } } }
以上實例編譯運行結果以下:
10 20
continue 關鍵字:
continue 適用於任何循環控制結構中。做用是讓程序馬上跳到下一次循環的迭代。 在for循環中,continue語句使程序當即跳轉到更新語句。 在while或者do...while循環中,程序當即跳轉到布爾表達式的判斷語句。
continue 實例:
10 20 40 50
return 關鍵字:
直接結束當前main方法,遇到return後,方法中的全部代碼將再也不執行。 注意:程序中要減小return的使用頻率。一旦使用return,整個main方法結束
1.死循環概念:循環中條件永遠都是true,死循環是永不結束的循環。死循環通常須要和跳出語句結合。2.循環嵌套 概念:是指一個循環的循環體是另外一個循環。好比說for循環中內置了一個for循環,就是循環嵌套。循環次數=外部循環的次數*內部循環的次數