1.什么是結構化編程
編程中只使用三大結構
不能使用goto陳述句
1972年美國科學家,發表論文證明所有的程式流程,只需要三大結構完成,
2.為什么要使用結構化編程?
把代碼分成一個一個的代碼塊
極大的提高了代碼的可 讀性
3.三大結構
A. 回圈結構
單執行緒(一個執行序列)
代碼總是執行上一行,再執行下一行
在順序結構中,要提防不小心產生的空陳述句
//空陳述句實體: public class BanchTest { public static void main(String[] args) { int i; for(i=0;i<5;i++);//這里的分號產生了空陳述句 { System.out.print(i); } } } //運行結果為: //5 //正確例子: public class BanchTest { public static void main(String[] args) { int i; for(i=0;i<5;i++)//注意這里沒分號 { System.out.print(i); } } } //運行結果 //01234一行代碼:
在JAVA中分號是行的分隔符,
在J S語言中分號、回車都是行的分隔符
在VB語言中,回車是分隔符
注釋:只要回車是分隔符、都需要右續行符
B. 分支結構
單分支結構(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) {//注意這里的判斷題的大括號不要省略,除非執行體和判別式在同一行 System.out.println("成年"); } } }雙分支結構(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) {//符合判別運算式執行體 System.out.println("成年"); }else {//不復合判別運算式執行體 System.out.println("未成年"); } } }多分支結構
a.多選一的結構(多個分支結構、只有一個被執行)
使用else if 比單分支滿足條件的做法,有更高的效率,所有的分支,同時只會執行一個
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.多選多的結構 (多個分支結構、有多個被同時執行)(switch)
格式:switch(key) 其中key支持的型別有:
1. int型別
2.可以自動升級為int的型別(byte、short、char、Integer)
3. enum(列舉型別)
4.在JDK8之后還支持string型別
在沒有break時會全部被執行
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: //這個條件下執行的部分 System.out.println("成績優秀"); case 2: System.out.println("成績良好"); case 3: System.out.println("成績一般"); default: //default等同于else,在switch中用default System.out.println("成績不良"); } } } /*運行結果為: 成績優秀 成績良好 成績一般 成績不良*/ 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: //這個條件下執行的部分 System.out.println("成績優秀"); case 2: System.out.println("成績良好"); case 3: System.out.println("成績一般"); default: //default等同于else,在switch中用default System.out.println("成績不良"); } } } /*key值不同值下的運行結果: 成績良好 成績一般 成績不良 */
在break之后,選中哪個就執行哪個(有多選一的效果)
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: //這個條件下執行的部分 System.out.println("成績優秀"); break;//關閉 case 2: System.out.println("成績良好"); break; case 3: System.out.println("成績一般"); break; default: //default等同于else,在switch中用default System.out.println("成績不良"); } } }
跑穿(沒有加break時,可以進入多個分支),只要以上條件都滿足時,我都執行
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: //這個條件下執行的部分 System.out.println("成績優秀"); case 2: System.out.println("成績良好"); case 3: System.out.println("成績一般"); default: //default等同于else,在switch中用default System.out.println("成績不良"); System.out.println("繼續加油");//滿足上面的四個條件,不管key的值是多少,此代碼都執行, } } }注釋:設計跑穿就是為了支持多對多的關系,
C.重復結構
do while(until)
先執行回圈,再判別,
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++;//回圈變數自加 } while(i<count); } }while
先判別,再執行回圈
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++;//回圈變數自加 } } }注釋:while回圈要比do..while回圈好多了,因為while回圈的可讀性要比后者好太多,
for
(continue )跳出本次回圈
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;//跳出本次回圈,跳到右邊距離最近的}的左邊 System.out.print(i); } } } /*運行結果 0124 */
(break)跳出本層回圈
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;//跳出本次回圈,跳到右邊距離最近的}的右邊 System.out.print(i); } } } /*運行結果 012 */
(return) 跳出函式
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;//跳出本函式 System.out.print(i); } } } /*運行結果 012 */forEach(遍歷集合)
for回圈和while回圈的區別:
for回圈,定長回圈,依靠固定回圈次數作為結束條件,
while回圈,標志性回圈,依靠標志來結束回圈(檔案是否讀到最后一行,用戶的輸入是否結束),
4.函式(在JAVA中叫方法)
面向物件的語言叫方法
面向程序的語言叫函式
在JAVA中沒有函式這么一說,只有方法一說,實際上方法就是函式,函式就是方法,只是在不同的語言不同的稱呼而已,有class宣告的就是類,類就是對一類事物的宣告,在JAVA中函式就是方法,就是后面帶有()的,類只是宣告,物件才是真實存在的可以干活的東西,所有的方法(也就是函式)都需要用物件去呼叫(不包括靜態的static)
什么是函式(函式,子程式,程序)
函式是一段可以復用的子程式,
函式(function):有回傳值(在C語言中void表示沒有回傳值)
程序(procedure):無回傳值
為什么要使用函式
代碼的復用,提高了效率
什么時候寫一個函式
復用
在寫某個代碼時,發現這個代碼似曾相識(寫過)
分割邏輯
不應該超過50行
一個方法最好只能有一個功能(單一功能原則)
功能簡單更加利于復用
函式的定義
函式定義的區域:類體以內,方法以外,
一模一樣(同名同參)的函式只能呼叫一次
方法定義有7個組成要素:
public static void main (String[] args) throws Exception { ? }1.權限修飾符 public
2.static/final/abatract
3.回傳型別 void
4.方法(函式)名稱 main
5.形式引數串列 (String[] args)
6.例外串列 throws Exception
7.{ } 方法體
注釋:3 4 5 是必須的
//兩個例子 void test1 (){} abstaract void test1();//抽象方法函式如何回傳回傳值
只要函式宣告一個不是void回傳型別,所有分支必然需要一個回傳值,
回傳值通過return陳述句進行回傳的,而且資料型別必須和方法宣告的回傳型別匹配,
函式 的呼叫
如何呼叫一個方法
1.可以多次呼叫
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.至少在現在的時候方法(函式)的實參(呼叫的時候叫實參)和形參(定義的時候叫形參)必須一致
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) {//函式定義時叫形參 System.out.println("JAVA使我快樂"+order); } } 運行結果 /* JAVA使我快樂1 JAVA使我快樂2 JAVA使我快樂3 */函式可以直接或間接的呼叫自己
遞回
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/296869.html
標籤:java
上一篇:LeetCode 179. 最大數【c++/java詳細題解】
下一篇:Java--??面試官:LinkedList真的比ArrayList添加元素快???本文通過Open JDK JMH帶你揭開真相《?建議收藏?》
