??博客主頁:愛敲代碼的小楊.
?專欄:《Java SE語法》
??感謝大家點(diǎn)贊????收藏?評論???,您的三連就是我持續(xù)更新的動(dòng)力??
1. 順序結(jié)構(gòu)
順序結(jié)構(gòu)比較簡單,按照代碼書寫的順序一行一行執(zhí)行。
public class Test {
public static void main(String[] args) {
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
/* 運(yùn)行結(jié)果
aaa
bbb
ccc
*/
}
}
如果調(diào)整代碼的書寫順序, 則執(zhí)行順序也發(fā)生變化。
public class Test {
public static void main(String[] args) {
System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb");
/* 運(yùn)行結(jié)果
aaa
ccc
bbb
*/
}
}
2. 分支結(jié)構(gòu)(選擇結(jié)構(gòu))
它的作用是根據(jù)判斷的條件是否成立(真或假),來決定后續(xù)代碼執(zhí)行順序。
舉例:
如同在岔路口做選擇。不同的選擇會(huì)帶來不同的路徑及結(jié)果。
2.1 if 語句
-
語法格式1
if (布爾表達(dá)式) { // 語句 }
如果布爾表達(dá)式結(jié)果為
true
,執(zhí)行if
中的語句,否則不執(zhí)行。執(zhí)行流程:
舉例:小明,如果這次考試考60分或以上就不掛科。
public class Test { public static void main(String[] args) { int score = 90; if (score >= 60) { System.out.println("不掛科"); } } }
-
語法格式2
if (布爾表達(dá)式) { // 語句 } else { // 語句 }
如果布爾表達(dá)式結(jié)果為
true
,執(zhí)行if
中的語句,執(zhí)行else
中的語句。執(zhí)行流程:
舉例:小明,如果這次考試考60分或以上就不掛科,沒有考到60分就掛科。
public class Test { public static void main(String[] args) { int score = 90; if (score >= 60) { System.out.println("不掛科"); } else { System.out.println("掛科"); } } }
-
語法格式3
if(布爾表達(dá)式1){ // 語句1 }else if(布爾表達(dá)式2){ // 語句2 }else{ // 語句2 }
表達(dá)式1成立,執(zhí)行語句1,否則表達(dá)式2成立,執(zhí)行語句2,否則執(zhí)行語句3
比如:考慮到學(xué)生自尊,不公開分?jǐn)?shù)排名,因此:
- 分?jǐn)?shù)在 [90, 100] 之間的,為優(yōu)秀
- 分?jǐn)?shù)在 [80, 90) 之前的,為良好 分?jǐn)?shù)在 [70, 80) 之間的,為中等
- 分?jǐn)?shù)在 [60, 70) 之間的,為及格 分?jǐn)?shù)在 [ 0, 60) 之間的,為不及格
- 錯(cuò)誤數(shù)據(jù)
按照上述辦法通知學(xué)生成績。
public class Test { public static void main(String[] args) { int score = 90; if(score >= 90){ System.out.println("優(yōu)秀"); }else if(score >= 80 && score < 90){ System.out.println("良好"); }else if(score >= 70 && score < 80){ System.out.println("中等"); }else if(score >= 60 && score < 70){ System.out.println("及格"); }else if(score >= 0 && score < 60){ System.out.println("不及格"); }else{ System.out.println("錯(cuò)誤數(shù)據(jù)"); } } }
【注意事項(xiàng)】:
-
代碼風(fēng)格
// 風(fēng)格1-----> 推薦 int x = 10; if (x == 10) { // 語句1 } else { // 語句2 } // 風(fēng)格2 int x = 10; if (x == 10) { // 語句1 } else { // 語句2 }
雖然兩種方式都是合法的, 但是 Java 中更推薦使用風(fēng)格1,代碼跟緊湊。
-
分號問題
int x = 20; if (x == 10); { System.out.println("hehe"); } // 運(yùn)行結(jié)果 hehe
此處多寫了一個(gè) 分號, 導(dǎo)致分號成為了
if
語句的語句體, 而 { } 中的代碼已經(jīng)成為了和一個(gè) if 無關(guān)的代碼塊,所以運(yùn)行結(jié)果是haha
,而不是空白。 -
懸垂
else
問題int x = 10; int y = 10; if (x == 10) if (y == 10) System.out.println("aaa"); else System.out.println("bbb");
if else
語句中可以不加大括號 . 但是也可以寫語句(只能寫一條語句). 此時(shí)else
是和最接近的if
匹配. 但是實(shí)際開發(fā)中我們不建議這么寫. 最好加上大括號.
2.2 switch 語句
基本語句
switch(表達(dá)式){
case 常量值1:{
語句1;
[break;]
}
case 常量值2:{
語句2;
[break;]
}
...
default:{
內(nèi)容都不滿足時(shí)執(zhí)行語句;
[break;]
}
}
執(zhí)行流程:
- 先計(jì)算表達(dá)式的值
- 和
case
依次比較,一旦有響應(yīng)的匹配就執(zhí)行該項(xiàng)下的語句,直到遇到break
時(shí)結(jié)束 - 當(dāng)表達(dá)式的值沒有與所列項(xiàng)匹配時(shí),執(zhí)行
default
代碼示例:
public class Test {
public static void main(String[] args) {
String week = "周四";
switch (week) {
case "周一":
System.out.println("埋頭苦干,寫程序");
break;
case "周二":
System.out.println("請求學(xué)長幫忙解決bug");
break;
case "周三":
System.out.println("今晚燒烤、小龍蝦");
break;
case "周四":
System.out.println("幫助學(xué)妹解決bug");
break;
case "周五":
System.out.println("今晚吃雞");
break;
case "周六":
System.out.println("上GitHub交友");
break;
case "周日":
System.out.println("郁郁寡歡、準(zhǔn)備上課");
default:
System.out.println("輸入錯(cuò)誤");
}
}
}
【注意事項(xiàng)】:
-
多個(gè)
case
后的常量值不可以重復(fù) -
switch
的括號內(nèi)只能是以下類型的表達(dá)式:- 基本類型:byte、char、short、int,注意不能是long類型
- 引用類型:String常量串、枚舉類型
-
break
不要遺漏, 否則會(huì)失去 “多分支選擇” 的效果int day = 1; switch(day) { case 1: System.out.println("星期一"); // break; case 2: System.out.println("星期二"); break; } // 運(yùn)行結(jié)果 星期一 星期二
-
switch
不能表達(dá)復(fù)雜的條件// 例如: 如果 num 的值在 10 到 20 之間, 就打印 hehe // 這樣的代碼使用 if 很容易表達(dá), 但是使用 switch 就無法表示. if (num > 10 && num < 20) { System.out.println("hehe"); }
-
switch
雖然支持嵌套, 但是很丑,一般不推薦public class Test { public static void main(String[] args) { int x = 1; int y = 1; switch(x) { case 1: switch(y) { case 1: System.out.println("hehe"); break; } break; case 2: System.out.println("haha"); break; } } }
綜上, 我們發(fā)現(xiàn), switch
的使用局限性是比較大的
3. 循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)它是在滿足條件的情況下,反復(fù)執(zhí)行某一段代碼的計(jì)算過程。
舉例:
我們要圍著操場跑 5 圈,跑圈這個(gè)行為就重復(fù)了 5 次,也就是循環(huán)了 5 次。
3.1 while 語句
基本格式:
while (循環(huán)條件) {
// 語句
}
執(zhí)行流程:
首先執(zhí)行判斷表達(dá)式,表達(dá)式的值為false
,循環(huán)直接結(jié)束;表達(dá)式的值為true
,則執(zhí)行循環(huán)語句,語句執(zhí)行完后再繼續(xù)判斷,是否進(jìn)行下一次判斷。
代碼示例:打印1~10的值
public class Test {
public static void main(String[] args) {
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
}
}
3.2 for 語句
基本格式:
for (表達(dá)式1;表達(dá)式2;表達(dá)式3) {
// 語句
}
表達(dá)式1:用于循環(huán)變量的初始化
表達(dá)式2:用于循環(huán)結(jié)束條件的判斷
表達(dá)式3:用于循環(huán)變量的調(diào)整
執(zhí)行流程:
首先執(zhí)行表達(dá)式1
初始化循環(huán)變量,接下來就是執(zhí)行表達(dá)式2
的判斷部分,表達(dá)式2
的結(jié)果如果為false
,則循環(huán)結(jié)束;如果表達(dá)式2
的結(jié)果為true
,則執(zhí)行循環(huán)語句,循環(huán)語句執(zhí)行完后,再去執(zhí)行表達(dá)式3
,調(diào)整循環(huán)變量,然后再去表達(dá)式2
的地方執(zhí)行判斷,表達(dá)式2
的結(jié)果是否為false
,決定循環(huán)是否繼續(xù)。
整個(gè)循環(huán)的過程中,表達(dá)式1
初始化部分只被執(zhí)行1次,剩下的就是表達(dá)式2
、循環(huán)語句、表達(dá)式3
在循環(huán)
代碼示例:打印1~10的值
public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
}
}
3.3 do…while循環(huán)
基本格式:
do{
語句
}while(表達(dá)式);
while
和 for
這兩種循環(huán)都是先判斷,條件如果滿足就進(jìn)入循環(huán),執(zhí)行循環(huán)語句,如果不滿足就跳出循環(huán);
而do...while
循環(huán)則是先直接進(jìn)入循環(huán)體,執(zhí)行循環(huán)內(nèi)部,然后在執(zhí)行 while
后的判斷表達(dá)式,表達(dá)式為真,就會(huì)進(jìn)行下一次,表達(dá)式為false
,則不再繼續(xù)循環(huán)。
執(zhí)行流程:
在do...while
循環(huán)中先執(zhí)行圖上的“語句”,執(zhí)行完語句,在去執(zhí)行“判斷表達(dá)式”,在判斷表達(dá)式的結(jié)果是true
,則繼續(xù)循環(huán),執(zhí)行循環(huán);判斷表達(dá)式的結(jié)果false
,則循環(huán)結(jié)束。
所以在do...while
語句中循環(huán)體是至少執(zhí)行一次的,這是do...while
循環(huán)比較特殊的地方。
代碼示例:打印1~10的值
public class Test {
public static void main(String[] args) {
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 10);
}
}
3.4 while語句 和 for語句的對比
4. break和continue
在循環(huán)執(zhí)行的過程中,如果某些狀況發(fā)生的時(shí)候,需要提前終止循環(huán)。
-
break
的作用是用于永久的終止循環(huán),只要break
被執(zhí)行,直接就會(huì)跳出循環(huán),繼續(xù)往后執(zhí)行。代碼示例:找到100~200之間的第一個(gè)3的倍數(shù)
public class Test { public static void main(String[] args) { for (int num = 100; num <= 200; num++) { if (num % 3 == 0) { System.out.println(num); break; } } } } // 運(yùn)行結(jié)果 102
-
continue
的作用是跳出本次循環(huán)continue
后邊的代碼文章來源:http://www.zghlxwxcb.cn/news/detail-790791.html代碼示例:找到100~200中的所有3的倍數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-790791.html
public class Test { public static void main(String[] args) { for (int num = 100; num <= 200; num++) { if (num % 3 == 0){ System.out.println(num); continue; } } } }
到了這里,關(guān)于【Java SE語法篇】4.程序邏輯控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!