Java選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的使用詳解
前言
大家了解了Java中的變量、數(shù)據(jù)類(lèi)型和運(yùn)算符后,小編給大家介紹使用選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)解決問(wèn)題。
一.選擇結(jié)構(gòu)
1.1 if選擇結(jié)構(gòu)的四種格式
1.1.1 基本if語(yǔ)句—單分支判斷
if(比較表達(dá)式){
語(yǔ)句體;
}
/*
執(zhí)行流程是:判斷比較表達(dá)式中的值,是true還是false,
如果是true就執(zhí)行大括號(hào)內(nèi)的語(yǔ)句體,執(zhí)行完語(yǔ)句體后會(huì)繼續(xù)向下執(zhí)行
如果是false,就直接向下執(zhí)行,不會(huì)執(zhí)行大括號(hào)里面的語(yǔ)句體
*/
1.1.2 基本if語(yǔ)句—雙分支判斷
if(表達(dá)式){
語(yǔ)句體1
}else{
語(yǔ)句體2
}
語(yǔ)句3
/*
執(zhí)行流程是:判斷比較表達(dá)式中的值,是true還是false,
如果是true就執(zhí)行語(yǔ)句1,執(zhí)行完語(yǔ)句體1后會(huì)向下執(zhí)行語(yǔ)句3;
如果是false就執(zhí)行else里面的語(yǔ)句2,執(zhí)行完語(yǔ)句體2后繼續(xù)向下執(zhí)行語(yǔ)句3;
*/
1.1.3 多重if語(yǔ)句
if(表達(dá)式1){
語(yǔ)句1
}else if(表達(dá)式2){
語(yǔ)句2
}
......
else{
語(yǔ)句n+1
}
語(yǔ)句n+2
/*
執(zhí)行流程是:判斷比較表達(dá)式中的值,是true還是false,
如果是true執(zhí)行語(yǔ)句1,執(zhí)行完語(yǔ)句體1后會(huì)向下執(zhí)行語(yǔ)句n+2
如果是false就繼續(xù)判斷表達(dá)式2的值是true還是false,
是true就執(zhí)行比較表達(dá)式2后的語(yǔ)句體2,
是false就繼續(xù)向下在做比較表達(dá)式n的判斷,
直到所有else if里面的比較表達(dá)式值都是false,就執(zhí)行else后的語(yǔ)句體
*/
1.1.4 嵌套if語(yǔ)句
if(表達(dá)式1){
語(yǔ)句1
if(表達(dá)式2){
語(yǔ)句2
}else{
語(yǔ)句3
}
}else{
語(yǔ)句4
}
語(yǔ)句5
/*
執(zhí)行流程是:判斷比較表達(dá)式中的值,是true還是false,
如果是true執(zhí)行語(yǔ)句1 再判斷比較表達(dá)式2中的值,
如果是true就執(zhí)行語(yǔ)句2,執(zhí)行完語(yǔ)句體2后會(huì)向下執(zhí)行語(yǔ)句5
如果是false就執(zhí)行語(yǔ)句3,執(zhí)行完語(yǔ)句體3后會(huì)向下執(zhí)行語(yǔ)句5
如果是false就執(zhí)行語(yǔ)句4,執(zhí)行完語(yǔ)句體4后會(huì)向下執(zhí)行語(yǔ)句5
*/
注意事項(xiàng)
- 比較表達(dá)式不管簡(jiǎn)單還是復(fù)雜,結(jié)果都是boolean類(lèi)型;
- if語(yǔ)句控制的語(yǔ)句體如果是一條語(yǔ)句,大括號(hào)可以省略。
- else后面如果沒(méi)有if,是不會(huì)出現(xiàn)比較表達(dá)式的。
- 四種if語(yǔ)句其實(shí)都是一個(gè)語(yǔ)句,只要有一個(gè)執(zhí)行其他的都不執(zhí)行。
1.2 switch選擇結(jié)構(gòu)
switch(表達(dá)式){
case 值1:
語(yǔ)句1;
break;
case 值2:
語(yǔ)句2;
break;
......
default:
語(yǔ)句n+1;
break;
}
/*
switch是關(guān)鍵字,聲明一個(gè)switch語(yǔ)句。
switch支持的數(shù)據(jù)類(lèi)型:
基本數(shù)據(jù)類(lèi)型:byte, short, char, int
包裝數(shù)據(jù)類(lèi)型:Byte, Short, Character, Integer
枚舉類(lèi)型:Enum
字符串類(lèi)型:String(Jdk 7+ 開(kāi)始支持)
case:后面的值就是要和表達(dá)式進(jìn)行比較的值;
break:表示程序到這里中斷,跳出switch語(yǔ)句;
default:如果所有的情況都不匹配,就執(zhí)行這里,相當(dāng)于if語(yǔ)句中的else;
*/
switch語(yǔ)句執(zhí)行流程
- 首先計(jì)算表達(dá)式的值。
- 和每一個(gè)case進(jìn)行匹配,如果有就執(zhí)行對(duì)應(yīng)的語(yǔ)句體,看到break就結(jié)束。
- 如果沒(méi)有匹配,就執(zhí)行default的語(yǔ)句體n+1。
switch選擇結(jié)構(gòu)支持的數(shù)據(jù)類(lèi)型
- jdk1.5以前,只能是byte、short、int、char類(lèi)型
- jdk1.5以后,引入了枚舉類(lèi)型(enum類(lèi)型)、包裝數(shù)據(jù)類(lèi)型(Byte、Short、Integer、Character)
- jdk1.7以后,支持String類(lèi)型,String類(lèi)有一個(gè)hasCode方法,結(jié)果也是返回int類(lèi)型
實(shí)際上,Switch在底層實(shí)現(xiàn),目前只支持整型數(shù)據(jù)類(lèi)型
注意事項(xiàng)
- case后面只能是常量,不能是變量,而且,多個(gè)case后面的值不能出現(xiàn)相同的
- default可以省略,但是不建議,因?yàn)樗淖饔檬菍?duì)不正確的情況給出提示。
- 遇到break或執(zhí)行到最后就結(jié)束判斷。
二.循環(huán)結(jié)構(gòu)
2.1 while循環(huán)結(jié)構(gòu)
public static void main(String[] args){
//基本循環(huán)體:
int i=0;
while(i<=10){
System.out.println(i);
i++;
//輸出結(jié)果:0,1,2,3,4,5,6,7,8,9,10
}
|
where(循環(huán)條件){
循環(huán)體語(yǔ)句;
}
//擴(kuò)展循環(huán)體:
where(循環(huán)條件){
循環(huán)體語(yǔ)句;
控制條件語(yǔ)句(break;continue;)
}
2.2 do-while循環(huán)結(jié)構(gòu)
//基本循環(huán)體:
public static void main(String[] args){
int i=0;
do{
System.out.println(i);
i++;
//輸出結(jié)果:0,1,2,3,4,5,6,7,8,9,10
}while(i>=10)
}
do{
循環(huán)體語(yǔ)句
}while(循環(huán)條件)
//擴(kuò)展循環(huán)體:
do{
循環(huán)體語(yǔ)句
控制條件語(yǔ)句(break;continue;)
}while(循環(huán)條件)
2.3 for循環(huán)結(jié)構(gòu)
public static void main(String[] args){
for(int i=0;i<=10;i++){
System.out.println(i);
//輸出結(jié)果:0,2,3,4,5,6,7,8,9,10
}
}
for(初始化;條件判斷;迭代部分){
循環(huán)體語(yǔ)句;
}
執(zhí)行流程:
1:執(zhí)行初始化語(yǔ)句
2:執(zhí)行判斷條件語(yǔ)句
如果這里是true,就繼續(xù)
如果這里是false,循環(huán)就結(jié)束
3:執(zhí)行循環(huán)體語(yǔ)句
4:執(zhí)行迭代部分語(yǔ)句
5:回到判斷條件
2.4 for-each循環(huán)結(jié)構(gòu)
public static void main(String[] args){
int[] array = {1,2,3,4,5,6,7};
for(int i : array){
System.out.println(i);
//輸出結(jié)果:1,2,3,4,5,6,7
}
}
for(元素類(lèi)型 元素名稱 : 遍歷對(duì)象){
循環(huán)操作;
}
}
注意事項(xiàng)
- 判斷條件語(yǔ)句無(wú)論簡(jiǎn)單還是復(fù)雜,結(jié)果是boolean類(lèi)型。
- 循環(huán)體語(yǔ)句如果是一條,可以省略大括號(hào),但是不建議。
- 有分號(hào)就沒(méi)有左大括號(hào),有左大括號(hào)就沒(méi)有分號(hào)。
- 一定要修改控制條件,否則會(huì)出現(xiàn)死循環(huán)。
- 在解決問(wèn)題時(shí),對(duì)于循環(huán)次數(shù)確定的情況,通常選用for循環(huán)結(jié)構(gòu);對(duì)于循環(huán)結(jié)構(gòu)次數(shù)不確定的情況,通常選用while和do-while循環(huán)結(jié)構(gòu)。
- for-each增強(qiáng)for循環(huán)在遍歷數(shù)組過(guò)程中不能修改數(shù)組中某元素的值。
- for-each僅適用于遍歷,不涉及有關(guān)索引(下標(biāo))的操作。
執(zhí)行循序
- while循環(huán)結(jié)構(gòu):先進(jìn)行條件判斷,再進(jìn)行循環(huán)體。如果條件不成立,退出循環(huán)。
- do-while循環(huán)結(jié)構(gòu):先進(jìn)行條件判斷,循環(huán)體至少執(zhí)行一次。
- for循環(huán)結(jié)構(gòu):先執(zhí)行初始化部分,再進(jìn)行條件判斷,然后執(zhí)行循環(huán)體,最后進(jìn)行迭代部分的計(jì)算。如果條件不成立,跳出循環(huán)。
- for-each循環(huán)結(jié)構(gòu):先定義變量,在把數(shù)組賦值給變量,在進(jìn)行遍歷。
三.控制語(yǔ)句
(1)break:中斷的意思
A:用在循環(huán)和switch語(yǔ)句中,離開(kāi)此應(yīng)用場(chǎng)景無(wú)意義。
B:作用
- a:跳出單層循環(huán)
- b:跳出多層循環(huán),需要標(biāo)簽語(yǔ)句的配合
(2)continue:繼續(xù)
A:用在循環(huán)中,離開(kāi)此應(yīng)用場(chǎng)景無(wú)意義。
B:作用
- a:跳出單層循環(huán)的一次,可以繼續(xù)下一次
(3)return:返回
A:用于結(jié)束方法的。
B:一旦遇到return,方法就不會(huì)在繼續(xù)往后執(zhí)行。
小結(jié):在循環(huán)結(jié)構(gòu)中break語(yǔ)句用于終止某個(gè)循環(huán),程序跳轉(zhuǎn)到循環(huán)體外的下一條語(yǔ)句.
continue語(yǔ)句用于跳出本次循環(huán),進(jìn)入下一次循環(huán)的語(yǔ)句
以上就是Java選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Java 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Java流程控制之循環(huán)結(jié)構(gòu)for,增強(qiáng)for循環(huán)
- Java流程控制之循環(huán)結(jié)構(gòu)while、do...while
- java循環(huán)結(jié)構(gòu)、數(shù)組的使用小結(jié)
- 最詳細(xì)的Java循環(huán)結(jié)構(gòu)解析之for循環(huán)教程(適合小白)
- Java代碼的三根頂梁柱:循環(huán)結(jié)構(gòu)
- Java基礎(chǔ)之選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)
- 淺析JAVA 循環(huán)結(jié)構(gòu)
- Java語(yǔ)法基礎(chǔ)之循環(huán)結(jié)構(gòu)語(yǔ)句詳解
- Java基礎(chǔ)知識(shí)精通循環(huán)結(jié)構(gòu)與break及continue
相關(guān)文章
在Spring Boot項(xiàng)目中引入本地JAR包的步驟和配置
本文探討了在Spring Boot項(xiàng)目中引入本地JAR包的步驟和必要的配置,通過(guò)使用Maven的system作用域,開(kāi)發(fā)者可以將自定義的本地庫(kù)或功能集成到Spring Boot應(yīng)用程序中,,需要的朋友可以參考下2023-10-10
java 實(shí)現(xiàn)通過(guò) post 方式提交json參數(shù)操作
這篇文章主要介紹了java 實(shí)現(xiàn)通過(guò) post 方式提交json參數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
Spring security自定義用戶認(rèn)證流程詳解
這篇文章主要介紹了Spring security自定義用戶認(rèn)證流程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
SpringBoot加載讀取配置文件過(guò)程詳細(xì)分析
在實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要將某些變量從代碼里面抽離出來(lái),放在配置文件里面,以便更加統(tǒng)一、靈活的管理服務(wù)配置信息。所以本文將為大家總結(jié)一下SpringBoot加載配置文件的常用方式,需要的可以參考一下2023-01-01
解析SpringBoot?搭建基于?MinIO?的高性能存儲(chǔ)服務(wù)的問(wèn)題
Minio是Apache?License?v2.0下發(fā)布的對(duì)象存儲(chǔ)服務(wù)器,使用MinIO構(gòu)建用于機(jī)器學(xué)習(xí),分析和應(yīng)用程序數(shù)據(jù)工作負(fù)載的高性能基礎(chǔ)架構(gòu)。這篇文章主要介紹了SpringBoot?搭建基于?MinIO?的高性能存儲(chǔ)服務(wù),需要的朋友可以參考下2022-03-03
基于Struts2實(shí)現(xiàn)防止表單重復(fù)提交
這篇文章主要介紹了基于Struts2實(shí)現(xiàn)防止表單重復(fù)提交,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10

