概述
在一個程序執行的過程中,各條語句的執行順序對程序的結果是有直接影響的。也就是說,程序的流程對運行結果有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現我們要完成的功能。
一.判斷語句
1.判斷語句--if
<code>if
(關係表達式){ 語句體; }/<code>
在一個程序執行的過程中,各條語句的執行順序對程序的結果是有直接影響的。也就是說,程序的流程對運行結果有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現我們要完成的功能。
執行流程:
首先判斷關係表達式看其結果是true還是false
如果是true就執行語句體
如果是false就不執行語句體
<code>public
static
void
main
(String[] args
){ System.out
.println("開始"
);int
a =10
;int
b =20
;if
(a == b){ System.out
.println("a等於b"
); }int
c =10
;if
(a == c){ System.out
.println("a等於c"
); } System.out
.println("結束"
); }/<code>
2 判斷語句--if...else
<code>if
(關係表達式) { 語句體1; }else
{ 語句體2; }/<code>
執行流程
首先判斷關係表達式看其結果是true還是false
如果是true就執行語句體1
如果是false就執行語句體2
<code>public
static
void
main
(String[] args
){int
a =1
;if
(a %2
==0
) { System.out
.println("a是偶數"
); }else
{ System.out
.println("a是奇數"
); } System.out
.println("結束"
); }/<code>
3 判斷語句--if..else if...else
<code>if
(判斷條件1
) { 執行語句1
; }else
if
(判斷條件2
) { 執行語句2
; } n-2
個else
if
}else
if
(判斷條件n) { 執行語句n; }else
{ 執行語句n+1
; }/<code>
執行流程
首先判斷關係表達式1看其結果是true還是false
如果是true就執行語句體1
如果是false就繼續判斷關係表達式2看其結果是true還是false
如果是true就執行語句體2
如果是false就繼續判斷關係表達式…看其結果是true還是false
…
如果沒有任何關係表達式為true,就執行語句體n+1。
<code>public
static
void
main
(String[] args
) {int
x =5
;int
y;if
(x>=3
) { y =2
* x +1
; }else
if
(x >= ‐1
&& x3
) { y =2
* x; }else
{ y =2
* x ‐1
; } System.out
.println("y的值是:"
+y); }/<code>
<code>指定考試成績,判斷學生等級
90
-100
優秀
80
-89
好
70
-79
良
60
-69
及格
60
以下
不及格
/<code>
<code>public
static
void
main
(String[] args
) {int
score =100
;if
(score<0
|| score>100
){ System.out
.println("你的成績是錯誤的"
); }else
if
(score>=90
&& score100
){ System.out
.println("你的成績屬於優秀"
); }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
{ System.out
.println("你的成績屬於不及格"
); } }/<code>
二、選擇語句--switch
<code>switch
(表達式) {case
常量值1
: 語句體1
;break
;case
常量值2
: 語句體2
;break
; ...default
: 語句體n+1
;break
; }/<code>
執行流程
首先計算出表達式的值
其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結
束。
最後,如果所有的case都和表達式的值不匹配,就會執行default語句體部分,然後程序結束掉。
<code>
public
static
void
main
(String[] args
) {switch
(weekday) {case
1
: System.out
.println("星期一"
);break
;case
2
: System.out
.println("星期二"
);break
;case
3
: System.out
.println("星期三"
);break
;case
4
: System.out
.println("星期四"
);break
;case
5
: System.out
.println("星期五"
);break
;case
6
: System.out
.println("星期六"
);break
;case
7
: System.out
.println("星期日"
);break
;default
: System.out
.println("你輸入的數字有誤"
);break
; } }/<code>
注意:case的穿透性
在switch語句中,如果case的後面不寫break,將出現穿透現象,也就是不會在判斷下一個case的值,直接向後運行,直到遇到break,或者整體switch結束。
<code>public
static
void
main
(String[] args
) {int
i =5
;switch
(i){case
0
: System.out
.println("執行case0"
);break
;case
5
: System.out
.println("執行case5"
);case
10
: System.out
.println("執行case10"
);default
: System.out
.println("執行default"
); } }/<code>
上述程序中,執行case5後,由於沒有break語句,程序會一直向後走,不會在判斷case,也不會理會break,直接運行完整體switch。
由於case存在穿透性,因此初學者在編寫switch語句時,必須要寫上break。
三、循環語句
循環概述:循環語句可以在滿足循環條件的情況下,反覆執行某一段代碼,這段被重複執行的代碼被稱為循環體語句,當反覆執行這個循環體時,需要在合適的時候把循環判斷條件修改為false,從而結束循環,否則循環將一直執行下去,形成死循環。
1.循環語句--for
<code>for
(初始化表達式①; 布爾表達式②; 步進表達式④){ 循環體③ }/<code>
執行流程
執行順序:①②③④>②③④>②③④…②不滿足為止。
①負責完成循環變量初始化
②負責判斷是否滿足循環條件,不滿足則跳出循環
③具體執行的語句
④循環後,循環條件所涉及變量的變化情況
<code>public
static
void
main
(String[] args
) { System.out
.println("HelloWorld"
); System.out
.println("HelloWorld"
); System.out
.println("HelloWorld"
); System.out
.println("HelloWorld"
); System.out
.println("HelloWorld"
); System.out
.println("HelloWorld"
); System.out
.println("HelloWorld"
); System.out
.println("HelloWorld"
); System.out
.println("HelloWorld"
); System.out
.println("HelloWorld"
); System.out
.println("‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"
); <10
for
(int
x =0
; x10
; x++) { System.out
.println("HelloWorld"
+x); }/<code>
循環練習:使用循環,計算1-100之間的偶數和
<code>public
static
void
main
(String[] args
) {int
sum =0
;for
(int
i =1
; i <=100
; i++) {if
(i %2
==0
){ sum += i; } } System.out
.println("sum:"
+sum); }/<code>
2.循環語句--while
<code>初始化表達式①while
( 布爾表達式②){ 循環體③ 步進表達式④ }/<code>
執行流程
執行順序:①②③④>②③④>②③④…②不滿足為止。
①負責完成循環變量初始化。
②負責判斷是否滿足循環條件,不滿足則跳出循環。
③具體執行的語句。
④循環後,循環變量的變化情況。
while循環輸出10次HelloWorld
<code>public
static
void
main
(String[] args
) {int
i =1
;while
(i10
){ System.out
.println("HelloWorld"
); i++; } }/<code>
while循環計算1-100之間的和
<code>public
static
void
main
(String[] args
) {int
sum =0
;int
i =1
;while
(i100
){ sum += i ; i++; } System.out
.println("1‐100的和是:"
+sum); }/<code>
3、循環語句--do...while
<code>初始化表達式①do
{ 循環體③ 步進表達式④ }while
(布爾表達式②); 執行流程執行順序:①③④>②③④>②③④…②不滿足為止。 ①負責完成循環變量初始化。 ②負責判斷是否滿足循環條件,不滿足則跳出循環。 ③具體執行的語句 ④循環後,循環變量的變化情況/<code>
執行流程
執行順序:①③④>②③④>②③④…②不滿足為止。
①負責完成循環變量初始化。
②負責判斷是否滿足循環條件,不滿足則跳出循環。
③具體執行的語句
④循環後,循環變量的變化情況
輸出10次HelloWorld
<code>public
static
void
main
(String[] args
) {int
x=1
;do
{ System.out
.println("HelloWorld"
); x++; }while
(x10
); }/<code>
do...while循環的特點:無條件執行一次循環體,即使我們將循環條件直接寫成false,也依然會循環一次。這樣的循環具有一定的風險性,因此初學者不建議使用do...while循環。
<code>public
static
void
main
(String[] args
){do
{ System.out
.println("無條件執行一次"
); }while
(false
); }/<code>
循環語句的區別
for 和 while 的小區別:
控制條件語句所控制的那個變量,在for循環結束後,就不能再被訪問到了,而while循環結束還可以繼續使用,如果你想繼續使用,就用while,否則推薦使用for。原因是for循環結束,該變量就從內存中消失,能夠提高內存的使用效率。
在已知循環次數的時候使用推薦使用for,循環次數未知的時推薦使用while。
跳出語句
break
使用場景:終止switch或者循環
在選擇結構switch語句中
在循環語句中
離開使用場景的存在是沒有意義的
<code>public
static
void
main
(String[] args
) {for
(int
i =1
; i10
; i++) {if
(i ==3
){break
; } System.out
.println("HelloWorld"
+i); } }/<code>
跳出多層循環:
<code>public
static
void
main
(String[] args
) { label:for
(int
i =0
; i5
; i++){for
(int
j =0
; j8
; j++){ System.out
.println("執行循環j:"
+j);for
(int
y =0
; y8
; y++){ System.out
.println("執行循環y:"
+y);if
(y==3
){ System.out
.println("執行跳出多層循環"
);break
label; } } } } } /<code>
continue
使用場景:結束本次循環,繼續下一次的循環
<code>public
static
void
main
(String[] args
) {for
(int
i =1
; i <=10
; i++) {if
(i ==3
){continue
; } System.out
.println("HelloWorld"
+i); } }/<code>
擴展知識點
死循環
死循環:也就是循環中的條件永遠為true,死循環的是永不結束的循環。例如:while(true){}
在後期的開發中,會出現使用死循環的場景,例如:我們需要讀取用戶輸入的輸入,但是用戶輸入多少數據我們並不清楚,也只能使用死循環,當用戶不想輸入數據了,就可以結束循環了,如何去結束一個死循環呢,就需要使用到跳出語句了。
嵌套循環
所謂嵌套循環,是指一個循環的循環體是另一個循環。比如for循環裡面還有一個for循環,就是嵌套循環。總共的循環次數=外循環次數*內循環次數
<code>for
(初始化表達式①; 循環條件②; 步進表達式⑦) {for
(初始化表達式③; 循環條件④; 步進表達式⑥) { 執行語句⑤; } }/<code>
嵌套循環執行流程:
執行順序:
①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
外循環一次,內循環多次。
比如跳繩:一共跳5組,每組跳10個。5組就是外循環,10個就是內循環。
練習:使用嵌套循環,打印5*8的矩形
<code>public
static
void
main
(String[] args
) {for
(int
i =0
; i5
; i++){for
(int
j =0
; j8
; j++){ System.out
.print("*"
); } System.out
.println(); } }/<code>