Java 邏輯控制全面詳解
1 順序結(jié)構(gòu)
順序結(jié)構(gòu)比較簡(jiǎn)單,就是代碼一行一行的執(zhí)行,本節(jié)之前寫的所有代碼都是順序結(jié)構(gòu)。
例如:
public static void main(String[] args) {
int a=10;
System.out.println(a);
System.out.println("hhhh");
double f=10.732;
System.out.println(f);
2 分支結(jié)構(gòu)
2.1 if語(yǔ)句
基本語(yǔ)法形式1:
if(布爾表達(dá)式){
//條件滿足時(shí)的要執(zhí)行的語(yǔ)句
}
示例代碼1:
public static void main(String[] args) {
int a=10;
int b=20;
if(a<b){
System.out.println(a);//a是10 b是20 a<b條件成立執(zhí)行該語(yǔ)句
}
if(a>b){
System.out.println(b);//a是10 b是20 a>b條件不成立不執(zhí)行該語(yǔ)句
}

基本語(yǔ)法形式2:
if(布爾表達(dá)式){
//條件成立是執(zhí)行的語(yǔ)句
}
else{
//條件不成立時(shí)執(zhí)行的語(yǔ)句
}
示例代碼2:
public static void main(String[] args) {
int a=10;
int b=20;
if(a>b){
System.out.println(a);//a是10 b是20 a>b條件不成立不執(zhí)行該語(yǔ)句
}
else{
System.out.println(b);//a是10 b是20 a>b條件成立執(zhí)行該語(yǔ)句
}
}

基本語(yǔ)法形式3:
if(布爾表達(dá)式1){
//表達(dá)式1為true,執(zhí)行的代碼
}
else if(布爾表達(dá)式2){
//表達(dá)式2為true,執(zhí)行的代碼
}
else{
//表達(dá)式1和表達(dá)式2都為falses,執(zhí)行的代碼
}
示例代碼3:
public static void main(String[] args) {
int a=10;
int b=10;
if(a>b){
System.out.println(a);//表達(dá)式1不成立,該語(yǔ)句不執(zhí)行
}
else if(b>a){
System.out.println(b);//表達(dá)式2不成立。該語(yǔ)句不執(zhí)行
}
else{
System.out.print("a=b=");//表達(dá)式1和表達(dá)式2都不成立,該語(yǔ)句執(zhí)行
System.out.println(a);//注意:表達(dá)式成立時(shí)執(zhí)行的語(yǔ)句可以是多條
}
}

注意事項(xiàng)1:
if語(yǔ)句可以嵌套使用,當(dāng)if(布爾表達(dá)式)中的表達(dá)式成立時(shí),就會(huì)執(zhí)行對(duì)應(yīng)的語(yǔ)句塊 ,在這個(gè)對(duì)應(yīng)的語(yǔ)句塊中也可以使用if語(yǔ)句
例如:找出三個(gè)數(shù)中最大的數(shù)
public static void main(String[] args) {
int a=50;
int b=70;
int c=20;
System.out.print("最大的數(shù)是");
if(a>b){
//a>b不成立,所以不執(zhí)行改語(yǔ)句塊
if(c>a){
System.out.println(c);
}
else{
System.out.println(a);
}
}
else{
//a>b不成立,所以執(zhí)行該語(yǔ)句塊
if(c>b){
System.out.println(c);//c>b不成立,不執(zhí)行該語(yǔ)句
}
else{
System.out.println(b);//c>b不成立,所以執(zhí)行改語(yǔ)句
}
}
}

注意事項(xiàng)2:
if語(yǔ)句中的布爾表達(dá)式成立時(shí),會(huì)執(zhí)行if所對(duì)應(yīng)的語(yǔ)句塊。如果不加“{}”時(shí),就會(huì)執(zhí)行緊隨其后的一條語(yǔ)句
例如:
public static void main(String[] args) {
int a=10;
int b=20;
if(a>b)
System.out.println(a);//此時(shí)if條件不成立,所以不會(huì)執(zhí)行這條語(yǔ)句
System.out.println(b);//雖然if條件不成立,但是這條語(yǔ)句已經(jīng)超出了if
//語(yǔ)句塊,所以這條語(yǔ)句還會(huì)執(zhí)行
}

2.2 switch語(yǔ)句
基本語(yǔ)法格式
switch ( 整數(shù) | 枚舉 | 字符 | 字符串 ){
case 內(nèi)容 1 : {
內(nèi)容滿足時(shí)執(zhí)行語(yǔ)句 ;
[ break ;]
}
case 內(nèi)容 2 : {
內(nèi)容滿足時(shí)執(zhí)行語(yǔ)句 ;
[ break ;]
}
...
default :{
內(nèi)容都不滿足時(shí)執(zhí)行語(yǔ)句 ;
[ break ;]
}
示例代碼:
public static void main(String[] args) {
int day=5;
switch (day){
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("輸入錯(cuò)誤");
break;
}
}

根據(jù) switch 中值的不同 , 會(huì)執(zhí)行對(duì)應(yīng)的 case 語(yǔ)句 . 遇到 break 就會(huì)結(jié)束該 case 語(yǔ)句 . 如果 switch 中的值沒(méi)有匹配的 case, 就會(huì)執(zhí)行 default 中的語(yǔ)句 . 我們建議一個(gè) switch 語(yǔ)句最好都要帶上 default.
3 循環(huán)結(jié)構(gòu)
3.1while循環(huán)
基本語(yǔ)法格式:
while(布爾表達(dá)式){
//要執(zhí)行的語(yǔ)句塊;
}
當(dāng)布爾表達(dá)式為true,循環(huán)執(zhí)行要執(zhí)行的語(yǔ)句塊,否則結(jié)束循環(huán)。
示例代碼:輸出1~10
public static void main(String[] args) {
int i=1;
while(i<=10){
System.out.println(i);
i++;
}
}

注意事項(xiàng):
- 1. 和 if 類似, while 下面的語(yǔ)句可以不寫 { } , 但是不寫的時(shí)候只能支持一條語(yǔ)句. 建議還是加上 { }
- 2. 和 if 類似, while 后面的 { 建議和 while 寫在同一行.
- 3. 和 if 類似, while 后面不要多寫 分號(hào), 否則可能導(dǎo)致循環(huán)不能正確執(zhí)行。
3.2 break語(yǔ)句
break 的功能是讓循環(huán)提前結(jié)束 .
例如:找出1~10中第一個(gè)3的倍數(shù)
public static void main(String[] args) {
int i=1;
while(i<=10){
if(i%3==0){
System.out.println(i);
break;//遇到break語(yǔ)句,循環(huán)結(jié)束
}
i++;
}
}

3.3 continue語(yǔ)句
continue 的功能是跳過(guò)這次循環(huán) , 立即進(jìn)入下次循環(huán) .
例如:找出1~10之間所有的偶數(shù)
public static void main(String[] args) {
int i=1;
while(i<=10){
if(i%2!=0){
i++;
continue;//遇到continue語(yǔ)句,會(huì)直接進(jìn)入下一次循環(huán),不會(huì)執(zhí)行后面的語(yǔ)句
}
System.out.println(i);
i++;
}
}

3.4 for循環(huán)
基本語(yǔ)法格式:
for(表達(dá)式1;布爾表達(dá)式2;表達(dá)式3){
//循執(zhí)行的語(yǔ)句塊
}
for循環(huán)執(zhí)行的順序是:
首次循環(huán):首先執(zhí)行表達(dá)式1,再執(zhí)行布爾表達(dá)式2,然后執(zhí)行循環(huán)體;最后執(zhí)行表達(dá)式3。
其余循環(huán): 首先執(zhí)行布爾表達(dá)式2,然后執(zhí)行循環(huán)體,最后執(zhí)行表達(dá)式3。
結(jié)束循環(huán): 布爾表達(dá)式的值為false.
示例代碼:
輸出1~10之間的所有數(shù)
public static void main(String[] args) {
for (int i =1; i <=10 ; i++) {
System.out.println(i);
}
}

注意事項(xiàng):
- 1:break和continue對(duì)for循環(huán)同樣適用。
- 2:和 if 類似 , for 下面的語(yǔ)句可以不寫 { } , 但是不寫的時(shí)候只能支持一條語(yǔ)句 . 建議還是加上 { }
- 3: 和 if 類似 , for 后面的 { 建議和 while 寫在同一行 .
- 4:和 if 類似 , for 后面不要多寫 分號(hào) , 否則可能導(dǎo)致循環(huán)不能正確執(zhí)行
3.5 do while 循環(huán)
基本語(yǔ)法格式:
do{
//循環(huán)執(zhí)行的語(yǔ)句
}while(布爾表達(dá)式);
do whiie 循環(huán)的執(zhí)行順序
首先執(zhí)行循環(huán)語(yǔ)句,然后再判斷布爾表達(dá)式是后為true.
因此,無(wú)論布爾表達(dá)式的值是否是true,第一次循環(huán)都會(huì)執(zhí)行。
示例代碼1:
打印1~10
public static void main(String[] args) {
int i=1;
do{
System.out.println(i);
i++;
}while (i<=10);
}

示例代碼2:
演示布爾表達(dá)式不成立,循環(huán)語(yǔ)句執(zhí)行一次
public static void main(String[] args) {
int i=0;
do{
System.out.println(i);
}while (i>0);//i=0 i>0表達(dá)式的值為false
}

4 邏輯控制綜合案例
4.1 輸出1000~1200之間所有的閏年
public static void main2(String[] args) {
for (int i = 1000; i <=1200 ; i++) {
if(i%100!=0&&i%4==0||i*400==0)
{
System.out.println(i);
}
}
}

4.2 計(jì)算1~100之間9出現(xiàn)的次數(shù)
public static void main(String[] args) {
int i=1;
int num=0;
while(i<=100){
int j=i;
/*
求出一個(gè)數(shù)各個(gè)位上的數(shù)字
循環(huán)執(zhí)行以下操作
第一步:用這個(gè)數(shù)取余10的到個(gè)數(shù)
第二步:這個(gè)數(shù)除等10
第三步:判斷這個(gè)數(shù)是不是0
*/
while (j>0){
if(j%10==9) {
num++;
}
j=j/10;
}
i++;
}
System.out.println(num);//9 19 29 39 49 59 69 79 89 中各出現(xiàn)一次9
//90 91 92 93 94 95 96 97 98中各出現(xiàn)一次9
//99中出現(xiàn)兩次9 總共20個(gè)9
}

到此這篇關(guān)于Java 邏輯控制全面詳解的文章就介紹到這了,更多相關(guān)Java 邏輯控制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java多線程開(kāi)發(fā)工具之CompletableFuture的應(yīng)用詳解
做Java編程,難免會(huì)遇到多線程的開(kāi)發(fā),但是JDK8這個(gè)CompletableFuture類很多開(kāi)發(fā)者目前還沒(méi)聽(tīng)說(shuō)過(guò),但是這個(gè)類實(shí)在是太好用了,本文就來(lái)聊聊它的應(yīng)用吧2023-03-03
springboot實(shí)現(xiàn)啟動(dòng)直接訪問(wèn)項(xiàng)目地址
這篇文章主要介紹了springboot實(shí)現(xiàn)啟動(dòng)直接訪問(wèn)項(xiàng)目地址,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
詳解springboot shiro jwt實(shí)現(xiàn)權(quán)限管理
為什么使用jwt呢,因?yàn)榭梢酝ㄟ^(guò)URL,POST參數(shù)或者在HTTP header發(fā)送,因?yàn)閿?shù)據(jù)量小,傳輸速度也很快。本篇通過(guò)具體代碼來(lái)進(jìn)行詳情解析,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09
SpringMVC異常處理知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于SpringMVC異常處理相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-10-10
Spring中@PropertySource的使用方法和運(yùn)行原理詳解
這篇文章主要介紹了Spring中@PropertySource的使用方法和運(yùn)行原理詳解,PropertySource注解可以方便和靈活的向Spring的環(huán)境容器(org.springframework.core.env.Environment?Environment)中注入一些屬性,這些屬性可以在Bean中使用,需要的朋友可以參考下2023-11-11
Java如何將String轉(zhuǎn)換成json對(duì)象或json數(shù)組
這篇文章主要介紹了Java如何將String轉(zhuǎn)換成json對(duì)象或json數(shù)組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Java統(tǒng)計(jì)50個(gè)10到50之間整數(shù)的隨機(jī)出現(xiàn)次數(shù)
這篇文章主要為大家詳細(xì)介紹了Java統(tǒng)計(jì)50個(gè)10到50之間整數(shù)的隨機(jī)出現(xiàn)次數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
JAVA中使用雙括號(hào)來(lái)初始化靜態(tài)常量的小技巧
這篇文章主要介紹了JAVA中使用雙括號(hào)來(lái)初始化靜態(tài)常量的小技巧,需要的朋友可以參考下2014-06-06

