java基礎學習Day06-流程控制
一.順序結構
-
java基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行
-
順序結構是最簡單的演算法結構
-
語句和語句之間,框和框之間按從上到下的順序進行的,他由若干個依次執行的處理步驟組成的,是任何一個演算法都離不開的一種基本演算法結構。
public static void main(String[] args) { System.out.println("1d"); System.out.println("2d"); System.out.println("3d"); System.out.println("4d"); }
二.選擇結構
-
if單選澤結構:
-
判斷一個東西是否可行,可行則執行,不可行則跳過,我們使用if語句來實現
-
語法:
if (布林表示式){ //布林表示式為true則執行的語句 }
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("please enter words:"); String i = scanner.nextLine(); if (i.equals("hello")){ System.out.println(i); } System.out.println("end");//不論是否都會執行 }
-
-
if雙選擇結構
-
需要兩個判斷,可行一種做法,不可行另一種做法
-
語法
if (布林表示式1){ //若布林表示式的值為true則執行該語句 }else{ //若布林表示式的值為false則執行該語句 }
public static void main(String[] args) { Scanner scanner =new Scanner(System.in); System.out.println("請輸入分數為:"); //分數是否及格,大於等於60為及格,小於60不及格 int i =scanner.nextInt(); if (i>=60){ System.out.println("及格"); }else{ System.out.println("不及格"); } scanner.close(); }
-
-
if多選擇結構
-
通常真實情況下,我們需要多種情況需要判斷,例如成績的a,b,c,d,等級,我們就需要使用多選擇結構
-
語法
if (布林表示式1){ //若布林表示式1的值為true則執行該語句 }else if(布林表示式2){ //若布林表示式2的值為true則執行該語句 }else if(布林表示式3){ //若布林表示式3的值為true則執行該語句 }else{ //如果以上布林表示式都不為true則執行該語句 }
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("please enter score:"); int score = scanner.nextInt(); if (score==100){ System.out.println("awsome!"); }else if(score>=80 && score<100){ System.out.println("great!"); }else if(score>=60 && score<80){ System.out.println("not bad!"); }else if(score<60){ System.out.println("pity!"); }else{ System.out.println("error"); } }
-
-
switch多選擇結構(switch,case,)
-
switch,case語句判斷一個變數與一系列值中的某個值是否相等,每個值稱為一個分支。
-
switch語句中的變數型別可以是
- byte,short,int,或者char
- 從javaSE7開始
- switch支援字串和String型別了
- 同是case標籤必須為字串常量或者字面量。
-
語法
switch(expression){ case value: //語句 break;//可選 case value: //語句 break;//可選 ..... default://可選 //語句 }
public static void main(String[] args) { char grade = 'C'; //case穿透:使用break終止case匹配,若不使用break,下面的語句也會被執行 switch (grade){ case 'A': System.out.println("wonderful"); break; case 'B': System.out.println("great"); break; case 'C': System.out.println("nice"); break; case 'D': System.out.println("not bad"); break; default: System.out.println("unknow"); } }
java檔案
IDEA反編譯檔案,使用hashcode儲存鍵值
-
三.迴圈結構
- while迴圈
- do...while迴圈
- for迴圈
- 在java5中引入了一種主要用於陣列的增強型for迴圈
-
while迴圈:
-
while是最基本的迴圈,它的結構為
while (布林表示式){ //迴圈內容 }
-
只要布林表示式為true,他就會一直迴圈下去
-
我們大部分情況是會讓迴圈停止的,我們需要一個讓表示式失效的方式來結束迴圈
-
少部分情況需要迴圈一直執行,比如伺服器的請求響應監聽
-
迴圈條件一直為true,就會形成死迴圈,正常業務中應當避免這種情況
-
Q:累加計算
public class whileDemo03 { public static void main(String[] args) { int i = 0; int sum = 0; while (i<=100){ sum = sum + i; i++; } System.out.println(sum); } }
-
-
do...while迴圈
-
對於while迴圈來說,如果不滿足條件,則不能進入迴圈。但是有時候我們需要即使不滿足條件,也至少執行一次
-
do...while和while相似,不同的是do...while至少會執行一次
do { //code }while (布林表示式);
-
while和do...while區別:
- while是先判斷後執行,do...while是先執行後判斷
- do...while保證迴圈體至少會執行一次
public static void main(String[] args) { int a = 0; while(a<0){ System.out.println(a); a++; } System.out.println("==========================="); do{ System.out.println(a); a++; }while(a<0); }//分割線下方輸出a=0;,dowhile語句執行了一次
-
-
for語句
-
for迴圈提供了一種更簡單的迴圈結構
-
for迴圈是一種支援迭代的通用結構,是最有效,最靈活的迴圈結構
-
for迴圈的執行次數是在迴圈開始之前就決定好的,語法如下
for (初始化;布林表示式;更新){ //程式碼語句 }
public static void main(String[] args) { int i = 0;//初始化條件 while (i<=10){//條件判斷 System.out.println(i);//迴圈體 i+=2;//迭代 } System.out.println("================分割線================="); //初始化;條件判斷;迭代 for (int a=0;a<10;a+=2){ System.out.println(a); } } //死迴圈 for (; ; ) { }
-
列印99乘法表
public static void main(String[] args) { for (int i = 1; i < 10; i++) { for (int j = 1; j <=i; j++) { System.out.print(i + "*" + "j" + "=" + i*j +" "); if (i == j){ System.out.println(); } } } }
-
四.增強for迴圈
-
java5引入了一種主要用於陣列或集合的增強型for迴圈
-
java增強for迴圈格式如下:
for (宣告語句 : 表示式) { //程式碼句子 }
-
宣告語句:宣告新的區域性變數,該變數的型別必須與陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素值相等。
-
表示式:表示式是要訪問的陣列名,或者返回值為陣列的方法。
public class ForDemo05 { public static void main(String[] args) { int[] numbers = {10,20,30,40,50};//定義一個數組 //for迴圈遍歷陣列,把numbers的值賦值給x輸出 for (int x:numbers){ System.out.println(x); } } }
五.break和continue
-
break在任何迴圈的主體部分,均可使用break來控制迴圈的流程。break用於強行退出迴圈,不執行迴圈中的剩餘的語句。
-
continue語句用於再迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。
public class ContinueDemo { public static void main(String[] args) { int i = 0; while (i<20){ System.out.print(i + " "); i++; if (i%3==0){ System.out.println(" "); continue;//跳出當前迴圈,回到上層迴圈 } } } }
public class BreakDemo { public static void main(String[] args) { int i = 0; while (i<10){ System.out.println(i); i++; if (i==5){ break;//跳出全部迴圈 } } } }
-
goto關鍵字
- goto是java的一個保留字,但並未正式使用,java沒有goto,
- 標籤:指後面跟一個冒號的識別符號,例如:label:
- 對於java唯一用到標籤的地方是在迴圈語句之前,而在迴圈之前設定標籤的唯一理由是:我們希望在其中巢狀另一層迴圈,與break,continue一起使用可以中斷到標籤的位置。
-
列印一個三角形
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
for (int j = 1; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}