轉載請註明本文出自機智W_en的博客(https://blog.csdn.net/kevin___dd),謝謝支持!
前言
這篇主要介紹Java程序員必須掌握的流程控制語句,只有掌握這些流程控制語句,編寫java程序才能得心應手。
Java流程控制
語句與複合語句
語句可以是以分號“;”結尾的簡單語句,也可以是用一對花括號“{}”括起來的複合語句
複合語句相當於一條“長語句”
順序結構:根據語句順序執行
是程序中最簡單最基本的流程控制,沒有特定的語法結構,按照代碼的先後順序,依次執行,程序中大多數的代碼都是這樣執行的。
總的來說:寫在前面的先執行,寫在後面的後執行。
按照語句順序執行
分支結構:根據條件選擇執行
也稱選擇結構
選擇結構有特定的語法規則,代碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,所以產生選擇,按照不同的選擇執行不同的代碼。
Java語言提供了兩種選擇結構語句
if語句
switch語句
if語句
l if語句第一種格式:
if(關係表達式) {
語句體
}
l 執行流程
首先判斷關係表達式看其結果是true還是false
如果是true就執行語句體
如果是false就不執行語句體
l if語句第二種格式:
if(關係表達式) {
語句體1;
}else{
語句體2;
}
l 執行流程
首先判斷關係表達式看其結果是true還是false
如果是true就執行語句體1
如果是false就執行語句體2
l if語句第三種格式:
if(關係表達式1) {
語句體1;
}else if (關係表達式2) {
語句體2;
}
…
else{
語句體n+1;
}
Switch語句
l switch語句格式:
switch(表達式) {
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
…
default:
語句體n+1;
break;
}
l 格式解釋
switch表示這是switch語句
表達式的取值:byte,short,int,char
JDK5以後可以是枚舉
JDK7以後可以是String
case後面跟的是要和表達式進行比較的值
語句體部分可以是一條或多條語句
break表示中斷,結束的意思,可以結束switch語句
default語句表示所有情況都不匹配的時候,就執行該處的內容,和if語句的else相似。
l 執行流程
首先計算出表達式的值
其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。
最後,如果所有的case都和表達式的值不匹配,就會執行default語句體部分,然後程序結束掉。
例:鍵盤輸入一個整數,輸出是奇數或偶數
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("x=");
int x = scan.nextInt();
if (x % 2 == 0) {
System.out.println(x+"是偶數");
} else { //x%2爲1
System.out.println(x+"是奇數");
}
}
}
循環結構:根據條件重複執行
l 循環語句可以在滿足循環條件的情況下,反覆執行某一段代碼,這段被重複執行的代碼被稱爲循環體語句,當反覆執行這個循環體時,需要在合適的時候把循環判斷條件修改爲false,從而結束循環,否則循環將一直執行下去,形成死循環。
l 循環語句的組成
初始化語句:
一條或者多條語句,這些語句完成一些初始化操作。
判斷條件語句:
這是一個boolean 表達式,這個表達式能決定是否執行循環體。
循環體語句:
這個部分是循環體語句,也就是我們要多次做的事情。
控制條件語句:
這個部分在一次循環體結束後,下一次循環判斷條件執行前執行。通過用於控制循環條件中的變量,使得循環在合適的時候結束。
l for循環語句格式:
for(初始化語句;判斷條件語句;控制條件語句) {
循環體語句;
}
執行流程
A:執行初始化語句
B:執行判斷條件語句,看其結果是true還是false
如果是false,循環結束。
如果是true,繼續執行。
C:執行循環體語句
D:執行控制條件語句
E:回到B繼續
注意事項
判斷條件語句的結果是一個boolean類型
循環體語句如果是一條語句,大括號可以省略;如果是多條語句,大括號不能省略。建議永遠不要省略。
一般來說:有左大括號就沒有分號,有分號就沒有左大括號
循環結構(for循環練習)
l 請在控制檯輸出數據1-10
l 請在控制檯輸出數據10-1
l 求出1-10之間數據之和
l 求出1-100之間偶數和
l 求出1-100之間奇數和
l 求5的階乘
l 在控制檯輸出所有的”水仙花數”
l 統計”水仙花數”共有多少個
l 請在控制檯輸出滿足如下條件的五位數
l 個位等於萬位
l 十位等於千位
l 個位+十位+千位+萬位=百位
l 請統計1-1000之間同時滿足如下條件的數據有多少個:
l 對3整除餘2
l 對5整除餘3
l 對7整除餘2
while循環語句
基本格式
while(判斷條件語句) {
循環體語句;
}
擴展格式
初始化語句;
while(判斷條件語句) {
循環體語句;
控制條件語句;
}
l for循環語句和while循環語句可以等價轉換,但還是有些小區別的
使用區別:控制條件語句所控制的那個變量,在for循環結束後,就不能再被訪問到了,而while循環結束還可以繼續使用,如果你想繼續使用,就用while,否則推薦使用for。原因是for循環結束,該變量就從內存中消失,能夠提高內存的使用效率。
場景區別:
for循環適合針對一個範圍判斷進行操作
while循環適合判斷次數不明確操作
do…while循環語句
l do…while循環語句格式:
基本格式
do {
循環體語句;
}while((判斷條件語句);
擴展格式
初始化語句;
do {
循環體語句;
控制條件語句;
} while((判斷條件語句);
l 三種循環語句其實都可以完成一樣的功能,也就是說可以等價轉換,但還是有小區別的:
do…while循環至少會執行一次循環體。
for循環和while循環只有在條件成立的時候纔會去執行循環體
l 注意事項:
寫程序優先考慮for循環,再考慮while循環,最後考慮do…while循環。
如下代碼是死循環
while(true){}
for(;;){}:第二個條件不寫默認爲true
l 需求:請輸出一個4行5列的星星(*)圖案。
l 需求:請輸出如下圖形
*
**
***
****
*****
l 需求:在控制檯輸出九九乘法表。
l break 中斷
跳出單層循環
跳出多層循環
帶標籤的跳出
格式:標籤名: 循環語句
標籤名要符合Java的命名規則
在選擇結構switch語句中
在循環語句中
離開使用場景的存在是沒有意義的
l continue繼續
l continue的使用場景:
在循環語句中
離開使用場景的存在是沒有意義的
l continue的作用:
單層循環對比break,然後總結兩個的區別
break 退出當前循環
continue 退出本次循環
也可以帶標籤的使用(不演示了)
做一個練習
l return返回
l return關鍵字不是爲了跳轉出循環體,更常用的功能是結束一個方法,也就是退出一個方法。跳轉到上層調用的方法。這個在方法的使用那裏會在詳細的講解。