欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章帶你了解JAVA結(jié)構(gòu)化編程詳情

 更新時間:2021年09月02日 11:38:07   作者:莫道桑榆晚^  
下面小編就為大家?guī)硪黄v解JAVA結(jié)構(gòu)化編程的文章。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1.什么是結(jié)構(gòu)化編程

編程中只使用三大結(jié)構(gòu)

不能使用goto語句

1972年美國科學家,發(fā)表論文證明所有的程序流程,只需要三大結(jié)構(gòu)完成。

2.為什么要使用結(jié)構(gòu)化編程?

把代碼分成一個一個的代碼塊

極大的提高了代碼的可 讀性

3.三大結(jié)構(gòu)

A. 循環(huán)結(jié)構(gòu)

  • 單線程(一個執(zhí)行序列)
  • 代碼總是執(zhí)行上一行,再執(zhí)行下一行
  • 在順序結(jié)構(gòu)中,要提防不小心產(chǎn)生的空語句
//空語句實例:
public class BanchTest {
    public static void main(String[] args) {
        int i;
        for(i=0;i<5;i++);//這里的分號產(chǎn)生了空語句
        {   
        System.out.print(i);
        }
    }
}
//運行結(jié)果為:
//5
//正確例子:
public class BanchTest {
    public static void main(String[] args) {
        int i;
        for(i=0;i<5;i++)//注意這里沒分號
        {
            System.out.print(i);
        }
    }
}
//運行結(jié)果
//01234

一行代碼:

  • 在JAVA中分號是行的分隔符。
  • 在J S語言中分號、回車都是行的分隔符
  • 在VB語言中,回車是分隔符

注釋:只要回車是分隔符、都需要右續(xù)行符

B. 分支結(jié)構(gòu)

  • 單分支結(jié)構(gòu)(if)
package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int age = 19;
        if(age>=18) {//注意這里的判斷題的大括號不要省略,除非執(zhí)行體和判別式在同一行
            System.out.println("成年");
        }
    }
}
  • 雙分支結(jié)構(gòu)(if...else..)
package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int age = 1;
        if(age>=18) {//符合判別表達式執(zhí)行體
            System.out.println("成年");
        }else {//不復合判別表達式執(zhí)行體
            System.out.println("未成年");
        }
    }
}
  • 多分支結(jié)構(gòu)

a.多選一的結(jié)構(gòu)(多個分支結(jié)構(gòu)、只有一個被執(zhí)行)

使用else if 比單分支滿足條件的做法,有更高的效率,所有的分支,同時只會執(zhí)行一個

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int age = 37;
        if(age<6) {
            System.out.println("幼兒");
        }
        else if(age<18) {
            System.out.println("少年");
        }
        else if(age<60) {
            System.out.println("成年");
        }
        else {
            System.out.println("老年人");
        }
    }
}

b.多選多的結(jié)構(gòu) (多個分支結(jié)構(gòu)、有多個被同時執(zhí)行)(switch)

  • 格式:switch(key) 其中key支持的類型有:

1. int類型

2.可以自動升級為int的類型(byte、short、char、Integer)

3. enum(枚舉類型)

4.在JDK8之后還支持string類型

  • 在沒有break時會全部被執(zhí)行
package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int key=1;
        switch(key) {
        case 1:
            //這個條件下執(zhí)行的部分
            System.out.println("成績優(yōu)秀");
        case 2:
            System.out.println("成績良好");
        case 3:
            System.out.println("成績一般");
        default:
            //default等同于else,在switch中用default
            System.out.println("成績不良");
        }
    }

/*運行結(jié)果為:
成績優(yōu)秀
成績良好
成績一般
成績不良*/

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int key=2;
        switch(key) {
        case 1:
            //這個條件下執(zhí)行的部分
            System.out.println("成績優(yōu)秀");
        case 2:
            System.out.println("成績良好");
        case 3:
            System.out.println("成績一般");
        default:
            //default等同于else,在switch中用default
            System.out.println("成績不良");
        }
    }
}

/*key值不同值下的運行結(jié)果:
成績良好
成績一般
成績不良
*/

  • 在break之后,選中哪個就執(zhí)行哪個(有多選一的效果)
package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int key=1;
        switch(key) {
        case 1:
            //這個條件下執(zhí)行的部分
            System.out.println("成績優(yōu)秀");
            break;//關(guān)閉
        case 2:
            System.out.println("成績良好");
            break;
        case 3:
            System.out.println("成績一般");
            break;
        default:
            //default等同于else,在switch中用default
            System.out.println("成績不良");
        }
    }
}
  • 跑穿(沒有加break時,可以進入多個分支),只要以上條件都滿足時,我都執(zhí)行
package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int key=2;
        switch(key) {
        case 1:
            //這個條件下執(zhí)行的部分
            System.out.println("成績優(yōu)秀");
        case 2:
            System.out.println("成績良好");
        case 3:
            System.out.println("成績一般");
        default:
            //default等同于else,在switch中用default
            System.out.println("成績不良");
            System.out.println("繼續(xù)加油");//滿足上面的四個條件,不管key的值是多少,此代碼都執(zhí)行。
        }
    }
}

注釋:設計跑穿就是為了支持多對多的關(guān)系。

C.重復結(jié)構(gòu)

  • do while(until)
  • 先執(zhí)行循環(huán),再判別。
package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
    int i = 0;
    int count=5;
            do {
                System.out.println(i);
                i++;//循環(huán)變量自加
            }
            while(i<count);
    }
}
  • while
  • 先判別,再執(zhí)行循環(huán)
package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
    int i = 0;
    int count=5;
            while(i<count) {
                System.out.println(i);
                i++;//循環(huán)變量自加
            }
    }
}

注釋:while循環(huán)要比do..while循環(huán)好多了,因為while循環(huán)的可讀性要比后者好太多。

  • for
  • (continue )跳出本次循環(huán)
package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
    int count=5;
    for (int i = 0; i < count; i++) {
        if(i==3)continue;//跳出本次循環(huán),跳到右邊距離最近的}的左邊
        System.out.print(i);
    }     
    }
}
/*運行結(jié)果
0124
*/
  • (break)跳出本層循環(huán)
package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
    int count=5;
    for (int i = 0; i < count; i++) {
        if(i==3) break;//跳出本次循環(huán),跳到右邊距離最近的}的右邊
        System.out.print(i);
    }     
    }
}
/*運行結(jié)果
012
*/
  • (return) 跳出函數(shù)
package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
    int count=5;
    for (int i = 0; i < count; i++) {
        if(i==3) return;//跳出本函數(shù)
        System.out.print(i);
    }     
    }
}
/*運行結(jié)果
012
*/
  • forEach(遍歷集合)
  • for循環(huán)和while循環(huán)的區(qū)別:
  • for循環(huán)。定長循環(huán),依靠固定循環(huán)次數(shù)作為結(jié)束條件。
  • while循環(huán)。標志性循環(huán),依靠標志來結(jié)束循環(huán)(文件是否讀到最后一行,用戶的輸入是否結(jié)束)。

4.函數(shù)(在JAVA中叫方法)

面向?qū)ο蟮恼Z言叫方法

面向過程的語言叫函數(shù)

在JAVA中沒有函數(shù)這么一說,只有方法一說。實際上方法就是函數(shù),函數(shù)就是方法,只是在不同的語言不同的稱呼而已。有class聲明的就是類。類就是對一類事物的聲明,在JAVA中函數(shù)就是方法,就是后面帶有()的。類只是聲明,對象才是真實存在的可以干活的東西,所有的方法(也就是函數(shù))都需要用對象去調(diào)用(不包括靜態(tài)的static)

  • 什么是函數(shù)(函數(shù),子程序,過程)

函數(shù)是一段可以復用的子程序。

函數(shù)(function):有返回值(在C語言中void表示沒有返回值)

過程(procedure):無返回值

  • 為什么要使用函數(shù)

代碼的復用,提高了效率

  • 什么時候?qū)懸粋€函數(shù)
  • 復用

在寫某個代碼時,發(fā)現(xiàn)這個代碼似曾相識(寫過)

  • 分割邏輯

不應該超過50行

一個方法最好只能有一個功能(單一功能原則)

功能簡單更加利于復用

  • 函數(shù)的定義
    • 函數(shù)定義的區(qū)域:類體以內(nèi),方法以外。
    • 一模一樣(同名同參)的函數(shù)只能調(diào)用一次
    • 方法定義有7個組成要素:
public static void main (String[] args) throws Exception {
​
}

1.權(quán)限修飾符 public

2.static/final/abatract

3.返回類型 void

4.方法(函數(shù))名稱 main

5.形式參數(shù)列表 (String[] args)

6.異常列表 throws Exception

7.{ } 方法體

注釋:3 4 5 是必須的

//兩個例子
void test1 (){}
abstaract void test1();//抽象方法
  • 函數(shù)如何返回返回值
    • 只要函數(shù)聲明一個不是void返回類型,所有分支必然需要一個返回值。
    • 返回值通過return語句進行返回的,而且數(shù)據(jù)類型必須和方法聲明的返回類型匹配。
  • 函數(shù) 的調(diào)用
    • 如何調(diào)用一個方法

1.可以多次調(diào)用

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        new BanchTest().test1();
}
        void test1 (){
            test2();
            test2();
            test2();
        } 
        void test2() {
            System.out.println("JAVA使我快樂");
        }
    }

2.至少在現(xiàn)在的時候方法(函數(shù))的實參(調(diào)用的時候叫實參)和形參(定義的時候叫形參)必須一致

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        new BanchTest().test1();
}
        void test1 (){
            test2(1);//括號里面的是實參
            test2(2);
            test2(3);
        } 
        void test2(int order) {//函數(shù)定義時叫形參
            System.out.println("JAVA使我快樂"+order);
        }
    }

運行結(jié)果
/*
JAVA使我快樂1
JAVA使我快樂2
JAVA使我快樂3
*/

  • 函數(shù)可以直接或間接的調(diào)用自己

遞歸

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 如何利用JAVA正則表達式輕松替換JSON中的大字段

    如何利用JAVA正則表達式輕松替換JSON中的大字段

    這篇文章主要給大家介紹了關(guān)于如何利用JAVA正則表達式輕松替換JSON中大字段的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • SpringBoot實現(xiàn)無限級評論回復的項目實踐

    SpringBoot實現(xiàn)無限級評論回復的項目實踐

    本文主要介紹了SpringBoot實現(xiàn)無限級評論回復的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Java基礎之StringBuffer詳解

    Java基礎之StringBuffer詳解

    這篇文章主要介紹了Java基礎之StringBuffer詳解,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringBoot中實現(xiàn)數(shù)據(jù)字典的示例代碼

    SpringBoot中實現(xiàn)數(shù)據(jù)字典的示例代碼

    這篇文章主要介紹了SpringBoot中實現(xiàn)數(shù)據(jù)字典的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 老生常談Java?網(wǎng)絡編程?——?Socket?詳解

    老生常談Java?網(wǎng)絡編程?——?Socket?詳解

    這篇文章主要介紹了Java?網(wǎng)絡編程?——?Socket?相關(guān)知識,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • SpringBoot實現(xiàn)RabbitMQ三種使用方式

    SpringBoot實現(xiàn)RabbitMQ三種使用方式

    本文主要介紹了SpringBoot實現(xiàn)RabbitMQ三種使用方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • SpringBoot項目整合MybatisPlus并使用SQLite作為數(shù)據(jù)庫的過程

    SpringBoot項目整合MybatisPlus并使用SQLite作為數(shù)據(jù)庫的過程

    SQLite是一個緊湊的庫,啟用所有功能后,庫大小可以小于 750KiB, 具體取決于目標平臺和編譯器優(yōu)化設置, 內(nèi)存使用量和速度之間需要權(quán)衡,這篇文章主要介紹了SpringBoot項目整合MybatisPlus并使用SQLite作為數(shù)據(jù)庫,需要的朋友可以參考下
    2024-07-07
  • java實現(xiàn)簡單銀行ATM系統(tǒng)

    java實現(xiàn)簡單銀行ATM系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單銀行ATM系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 四個Java必須知道的負載均衡算法分享

    四個Java必須知道的負載均衡算法分享

    我們在設計系統(tǒng)的時候,為了系統(tǒng)的高擴展性,會創(chuàng)建無狀態(tài)的系統(tǒng)。但是,要使系統(tǒng)具有更好的可擴展性,除了無狀態(tài)設計之外,還要考慮采用什么負載均衡算法,本文就帶領大家認識以下常見的4種負載均衡算法
    2023-01-01
  • Spring的自定義擴展標簽NamespaceHandler解析

    Spring的自定義擴展標簽NamespaceHandler解析

    這篇文章主要介紹了Spring的自定義擴展標簽NamespaceHandler解析,在很多情況下,我們需要為系統(tǒng)提供可配置化支持,簡單的做法可以直接基于Spring的標準Bean來配置,Spring提供了可擴展Schema的支持,這是一個不錯的折中方案,需要的朋友可以參考下
    2023-12-12

最新評論