一、控制選擇結構
1.if語句(被稱為分支語句/條件控制語句)四種寫法
- 第一種文法
第一種寫法:
int a = 100;
int b = 200;
if(布爾表達式){
java語句;
java語句;
}
這裡的一個大括号{} 叫做一個分支。
該文法的執行原理是:
如果布爾表達式的結果是true,則執行大括
号中的程式,否則大括号中代碼不執行。
- 第二種文法
第二種寫法:
if(布爾表達式){ // 分支1
java語句;
}else{ // 分支2
java語句;
}
執行原理:如果布爾表達式的結果是true,則執行分支1,分支2不執行。
如果布爾表達式的結果是false,分支1不執行,執行分支2.
以上的這個語句可以保證一定會有一個分支執行。
else表示其它。
- 第三種文法
第三種寫法:
if(布爾表達式1){ // 分支1
java語句;
}else if(布爾表達式2){ // 分支2
java語句;
}else if(布爾表達式3){
java語句;
}else if(布爾表達式4){
java語句;
}....
以上if語句的執行原理:
先判斷“布爾表達式1”,如果“布爾表達式1”為true,則執行分支1,然後if語句結束了。
當“布爾表達式1”結果是false,那麼會繼續判斷布爾表達式2的結果,
如果布爾表達式2的結果是true,則執行分支2,然後整個if就結束了。
從上往下依次判斷,主要看第一個true發生在哪個分支上。
第一個true對應的分支執行,隻要一個分支執行,整個if結束。
- 第四種文法
第四種寫法:
if(布爾表達式1){ // 分支1
java語句;
}else if(布爾表達式2){ // 分支2
java語句;
}else if(布爾表達式3){
java語句;
}else if(布爾表達式4){
java語句;
}else{
java語句; // 以上條件沒有一個成立的。這個else就執行了。
}
- 對于if語句來說,在任何情況下隻能有1個分支執行,不可能 存在2個或者更多個分支執行。if語句中隻要有1個分支執行了, 整個if語句就結束了。(對于1個完整的if語句來說的。)
- 以上4種文法機制中,凡是帶有else分支的,一定可以保證會有 一個分支執行。以上4種當中,第一種和第三種沒有else分支,這樣的語句可能會導緻最後一個分支都不執行。第二種和第四種肯定會有 1個分支執行。
- 當分支當中“java語句;”隻有1條,那麼大括号{}可以省略,但為了 可讀性,最好不要省略。(有的程式員在編寫代碼的時候,可能會故意 将大括号{}省略,你能看懂就行。)
2.switch語句
switch(值){
case 值1:
java語句;
java語句;...
break;
case 值2:
java語句;
java語句;...
break;
case 值3:
java語句;
java語句;...
break;
default:
java語句;
}
- 執行原理
- switch後面小括号中的“資料”和case後中的“資料”一一進行比對,比對成功的分支執行
- 所有分支都不比對,如果有default語句的話,執行它的分支的語句
- case穿透
- 比對成功的分支執行,分支中有“break”語句的話,switch語句終止
- 如果沒有“break”語句的話,直接進入下一分支執行(不比對),稱為case穿透現象
- case可以合并
switch (score) {
case 10:
case 9:
ans = "優";
break;
case 8:
ans = "良";
//break;
case 7:
ans = "中";
break;
case 6:
ans = "及格";
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
ans = "不及格";
break;
default:
ans = "輸入的成績有誤";
}
//case10、case9 和 case 5、case 4、 case 3、case 2、 case 1、case 0都是屬于case合并
//比如進入case8由于case8沒有break會case穿透到case7才結束
二、循環結構
1.for語句
- 文法結構
for(初始化表達式; 布爾表達式; 更新表達式){
循環體; // 循環體由java語句構成
java語句;
java語句;
java語句;
java語句;
....
}
- 執行原理
- 先執行初始化表達式,并且初始化表達式隻執行1次。然後判斷布爾表達式的結果,如果布爾表達式結果為true,則執行循環體。循環體結束之後,執行更新表達式。更新完之後,再判斷布爾表達式的結果,如果還是true,繼續執行循環體。直到更新表達式執行結束之後,再次判斷條件時,條件為false,for循環終止。
- 初始,布爾,更新表達式都不是必須的,不寫為死循環,但是分号必須寫
2.while循環
- 文法
while(布爾表達式){
循環體;
}
- 執行原理
- 判斷布爾表達式的結果,如果為true就執行循環體,循環體結束之後,再次判斷布爾表達式的結果,如果還是true,繼續執行循環體,直到布爾表達式結果為false,while循環結束。
- for與while互相轉換
for(初始化表達式; 布爾表達式; 更新表達式){
循環體;
}
初始化表達式;
while(布爾表達式){
循環體;
更新表達式;
}
- 循環次數
- 0到N次
3.do while循環
- 文法
do {
循環體;
}while(布爾表達式);//注意do while語句最後是以分号結尾
- 執行原理
- 先執行循環體當中的代碼,執行一次循環體之後,判斷布爾表達式的結果,如果為true,則繼續執行循環體,如果為false循環結束。
- 執行次數
- 1到N次
三、控制循環結構
1.break(中斷/折斷)表示循環結束了
- switch語句當中,用來終止switch語句的執行。 用在switch語句當中,防止case穿透現象,用來終止switch。
- 用在for,while,do while,循環語句中用來跳出循環,終止循環的執行
public class YootkDemo {
public static void main(String args[]) {
for (int num = 1 ; num < 10 ; num ++) {
if (num == 3) { // 設定一個分支結構
System.out.println("我心目中的女神出現了,并且主動的坐在了我吃飯的餐桌對面,我放下大餅!") ;
break ; // 結束整個循環
}
System.out.println("開始吃第“" + num + "”張大餅,吃的滿口流油!") ;
}
}
}
程式執行結果:
開始吃第“1”張大餅,吃的滿口流油!
開始吃第“2”張大餅,吃的滿口流油!
我心目中的女神出現了,并且主動的坐在了我吃飯的餐桌對面,我放下大餅!
2.continue(繼續/下一個)
- 用在循環語句中!表示終止目前"本次"循環,直接進入下一次循環繼續執行
public class YootkDemo {
public static void main(String args[]) {
for (int num = 1 ; num < 10 ; num ++) {
if (num == 3) { // 設定一個分支結構
System.out.println("我心目中的女神出現了,并且主動的坐在了我吃飯的餐桌對面,我放下大餅!") ;
continue ; // 結束一次吃餅動作
}
System.out.println("開始吃第“" + num + "”張大餅,吃的滿口流油!") ;
}
}
}
程式執行結果:
開始吃第“1”張大餅,吃的滿口流油!
開始吃第“2”張大餅,吃的滿口流油!
我心目中的女神出現了,并且主動的坐在了我吃飯的餐桌對面,我放下大餅!
開始吃第“4”張大餅,吃的滿口流油!
開始吃第“5”張大餅,吃的滿口流油!
開始吃第“6”張大餅,吃的滿口流油!
開始吃第“7”張大餅,吃的滿口流油!
開始吃第“8”張大餅,吃的滿口流油!
開始吃第“9”張大餅,吃的滿口流油!