javaSE——流程控制
------------恢復內容開始------------
# 順序結構JAVA的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行。
選擇結構
1、if單選擇結構
我們很多時候需要去判斷一個東西是否可行,然後我們才去執行,這樣一個過程在程式中用if語句來表示:
if(布林表示式){
//如果布林表示式為true將執行的語句
}
意義:if語句對條件表示式進行一次測試,若測試為真,則執行下面的語句,否則跳過該語句。
【示例】
//package放在最前面 package com.kuang.struct; import java.util.Scanner; public class ifDemo01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //接收使用者輸入 System.out.println("請輸入內容:"); String s = scanner.nextLine(); //假設條件為輸入的只要是Hello就輸出,如果是其他字串無操作 if(s.equals("Hello")){ System.out.println("輸入的是:"+s); } System.out.println("End"); scanner.close(); } }
【equals方法是用來進行字串的比較的,之後會詳解,這裡大家只需要知道他是用來比較字串是否一致的即可!但和==是有區別的。】
2、if雙選擇結構
if(布林表示式){
//如果布林表示式的值為true
}else{
//如果布林表示式的值為false
}
意義:當條件表示式為真時,執行語句塊1,否則,執行語句塊2。也就是else部分。
【演示】我們來寫一個示例:考試分數大於60就是及格,小於60分就不及格
package com.kuang.struct; import java.util.Scanner; public class ifDemo02 { 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(); } }
3、if多選擇結構
if(布林表示式 1){
//如果布林表示式 1的值為true執行程式碼
}else if(布林表示式 2){
//如果布林表示式 2的值為true執行程式碼
}else if(布林表示式 3){
//如果布林表示式 3的值為true執行程式碼
}else {
//如果以上布林表示式都不為true執行程式碼
}
使用 if,else if,else 語句的時候,需要注意下面幾點:
- if 語句至多有 1 個 else 語句,else 語句在所有的 else if 語句之後。
- if 語句可以有若干個 else if 語句,它們必須在 else 語句之前。
- 一旦其中一個 else if 語句檢測為 true,其他的 else if 以及 else 語句都將跳過執行。
【演示】我們來改造一下上面的成績案例,學校根據分數區間分為ABCD四個等級!
package com.kuang.struct;
import java.util.Scanner;
public class ifDemo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入成績:");
//score接收鍵盤輸入的數字
int score = scanner.nextInt();
if (score == 100) {
System.out.println("恭喜滿分!");
} else if (score < 100 && score >= 90) {
System.out.println("A級");
} else if (score < 90 && score >= 80) {
System.out.println("B級");
} else if (score < 80 && score >= 70) {
System.out.println("C級");
} else if (score < 70 && score >= 60) {
System.out.println("D級");
} else if (score<60 && score >=0){
System.out.println("不及格!");
}else {
System.out.println("成績輸入不合法!");
}
scanner.close();
}
}
4、巢狀的if結構
if(布林表示式 1){
////如果布林表示式 1的值為true執行程式碼
if(布林表示式 2){
////如果布林表示式 2的值為true執行程式碼
}
}
【記住一點就好,所有的流程控制語句都可以互相巢狀,互不影響!】
5、switch多選擇結構
多選擇結構還有一個實現方式就是switch case 語句。
switch case 語句判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支。
switch(expression){
case value :
//語句
break; //可選
case value :
//語句
break; //可選
//你可以有任意數量的case語句
default : //可選
//語句
}
switch case 語句有如下規則:
- switch 語句中的變數型別可以是: byte、short、int 或者 char。從 Java SE 7 開始,switch 支援字串 String 型別了,同時 case 標籤必須為字串常量或字面量。
- switch 語句可以擁有多個 case 語句。每個 case 後面跟一個要比較的值和冒號。
- case 語句中的值的資料型別必須與變數的資料型別相同,而且只能是常量或者字面常量。
- 當變數的值與 case 語句的值相等時,那麼 case 語句之後的語句開始執行,直到 break 語句出現才會跳出 switch 語句。
- 當遇到 break 語句時,switch 語句終止。程式跳轉到 switch 語句後面的語句執行。case 語句不必須要包含 break 語句。如果沒有 break 語句出現,程式會繼續執行下一條 case 語句,直到出現break 語句。
- switch 語句可以包含一個 default 分支,該分支一般是 switch 語句的最後一個分支(可以在任何位置,但建議在最後一個)。default 在沒有 case 語句的值和變數值相等的時候執行。default 分支不需要 break 語句。
switch case 執行時,一定會先進行匹配,匹配成功執行當前 case 中的語句,再根據是否有 break,判斷是否繼續執行,或是跳出switch。
public static void main(String args[]){
//char grade = args[0].charAt(0);
char grade = 'C';
switch(grade)
{
case 'A' :
System.out.println("優秀");
break;
case 'B' :
case 'C' :
System.out.println("良好");
break;
case 'D' :
System.out.println("及格");
break;
case 'F' :
System.out.println("你需要再努力努力");
break;
default :
System.out.println("未知等級");
}
System.out.println("你的等級是 " + grade);
}
如果 case 語句塊中沒有 break 語句時,匹配成功後,從當前 case 開始,後續所有 case 的值都會輸出。如果後續的 case 語句塊有 break 語句則會跳出判斷。【case穿透】
public static void main(String args[]){
int i = 1;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
case 3:
System.out.println("3");
break;
default:
System.out.println("default");
}
}
輸出:1,2,3。
【JDK7增加了字串表示式;當然字元的本質還是數字,switch把對字元的處理變成了對雜湊值的處理,這點通過反編譯就能得到】
【反編譯:把java原始碼編譯得到的class(位元組碼)檔案拖入idea中已經開啟的工程資料夾就可以看見反編譯後的原始碼】
public static void main(String[] args) {
String name = "狂神";
switch (name) { //JDK7的新特性,表示式結果可以是字串!!!
case "秦疆":
System.out.println("輸入的秦疆");
break;
case "狂神":
System.out.println("輸入的狂神");
break;
default:
System.out.println("弄啥嘞!");
}
}
```<p>------------恢復內容結束------------</p>