一、簡介
描述:
-
Java中方法是陳述句的集合,它們在一起執行一個功能,
-
方法是解決一類問題的步驟的有序組合,它包含于類或物件中,
-
方法在程式中被創建后,在其他使用了該方法的地方被參考,
優點:
- 使程式代碼變得更簡短而清晰,
- 有利于程式維護,
- 可以提高程式開發的效率,
- 提高了代碼的重用性,
設計原則:
- 方法的本意是功能塊,就是實作某個功能的陳述句塊的集合,我們設計方法的時候,最好保持方法的原子性,就是一個方法只完成一個功能,這樣利于我們后期的擴展,
命名規范:
- 小駝峰法
二、定義方法
語法:
/* 修飾符 */ /* 回傳值型別 */ 方法名 (/* 引數串列 */) {
/* 方法體 */
}
描述:
-
修飾符:修飾符是可選項,可有多個不同修飾符,告訴編譯器如何呼叫該方法,定義了該方法的訪問型別,
-
回傳值型別 :方法可能會回傳值,Java是強型別語言,需要顯式指定回傳值的資料型別,若沒有回傳值,回傳值型別使用關鍵字'void',
-
方法名:是方法的實際名稱,方法名和引數串列共同構成方法簽名,
-
引數串列:
- 引數串列是表是指方法的形式引數型別、順序和個數,
- 引數串列可以為空,也可以由多個形式引數的宣告組成,互相之間用逗號分隔,
- 形式引數的宣告方式為:形式引數型別 + 空格 + 形式引數名稱,
- 形式引數像是一個占位符,當方法被呼叫時,會傳遞實際引數的值給形式引數,
- 形式引數:在方法被呼叫時用于接收外界輸入的資料,
- 實際引數:呼叫方法時實際傳給方法的資料,
-
方法體:方法體包含具體的陳述句,定義該方法的功能,
示例:
/* 比較兩個數的大小,獲取更大的值 */
public static int max(int num1, int num2) {
int result;
if (num1 > num2) {
result = num1;
} else {
result = num2;
}
return result;
}
三、呼叫方法
描述:
-
Java語言中通常使用這樣的形式呼叫方法:類或物件名.方法名(實參串列)
-
當程式呼叫一個方法時,程式的控制權就交給了被呼叫的方法,
-
當被呼叫方法的'return'陳述句執行,或者到達方法體閉括號的時候,交還控制權給程式,
-
當呼叫的方法有回傳值的時候,該方法的呼叫通常被當做一個值來使用,例如可以用來將該方法的回傳值賦值給一個變數,
-
如果方法回傳值型別是'void',方法的呼叫一定是一條陳述句,不能被當做一個值來使用,
注意:
-
Java的'main'方法的頭部寫法是固定的,如下所示:
public static void main(String[] args/* 該形參名可隨意定義 */) { /* 方法體可隨意定義 */ } -
Java的'main'方法是被JVM呼叫的,除此之外,'main'方法和普通方法沒什么區別,
示例:
/* 運行main方法,結果為在控制臺輸出:5 */
public class TestMax {
/* main方法里呼叫max方法 */
public static void main(String[] args) {
int i = 5;
int j = 2;
int maxNum = new TestMax().max(i, j);
System.out.println(maxNum);
}
/* 比較兩個數的大小,獲取更大的值 */
public int max(int num1, int num2) {
int result;
if (num1 > num2) {
result = num1;
} else {
result = num2;
}
return result;
}
}
四、方法多載
描述:
- 一個類的兩個方法擁有相同的方法名,但是有不同的引數串列,就是方法多載,
- Java編譯器根據方法簽名的不同,判斷哪個多載方法應該被呼叫,
- 方法多載可以讓程式更清晰易讀,
注意:
- 執行密切相關任務的方法應該使用相同的方法名,使用方法多載,
- 多載的方法必須擁有不同的引數串列,你不能僅僅依據修飾符或者回傳型別的不同來多載方法,
示例:
/* 運行main方法,結果為在控制臺依次輸出:5 5.5 */
public class TestSum {
/* main方法里呼叫兩個sum多載方法 */
public static void main(String[] args) {
double sum = new TestSum().sum(2, 3);
System.out.println(sum);
sum = new TestSum().sum(2.2, 3.3);
System.out.println(sum);
}
/* 得到兩個浮點數的和 */
public double sum(double num1, double num2) {
return num1 + num2;
}
/* 得到兩個整數的和 */
public double sum(int num1, int num2) {
return num1 + num2;
}
}
五、方法遞回
描述:
- 遞回的基本思想就是'自己呼叫自己',一個使用遞回技術的方法將會直接或者間接的呼叫自己,
- 利用遞回可以用簡單的程式來解決一些復雜的問題,它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,
- 遞回策略只需少量的程式就可描述出解題程序所需要的多次重復計算,大大地減少了程式的代碼量,
- 遞回的能力在于用有限的陳述句來定義物件的無限集合,
- 遞回結構一般包括兩個部分:
- 遞回頭:要有邊界條件,滿足邊界條件時不再呼叫自身方法,如果沒有遞回頭,方法呼叫將陷入死回圈,
- 遞回體:什么時候需要呼叫自身方法,
注意:
- 方法遞回呼叫時,會一層層增加呼叫方法的層次,直到滿足邊界條件后,再原路回傳,一層層結束方法的呼叫,
- 遞回易理解,容易編程,但是遞回用堆疊機制實作的,每深入一層,都要占去一塊堆疊資料區域,對嵌套層數深的一些演算法,遞回會力不從心,空間上會以記憶體崩潰而告終,而且遞回也帶來了大量的函式呼叫,這也有許多額外的時間開銷,所以在深度大時,它的時空性就不好了(會占用大量的記憶體空間),
- 能不用遞回就不用遞回,遞回都可以用回圈結構來代替,回圈結構效率高,運行時間只因回圈次數增加而增加,沒什么額外開銷,空間上也沒有什么增加,缺點是不容易理解,撰寫復雜問題時困難,
示例:
/* 運行main方法,結果為在控制臺輸出:120 */
public class TestFactorial {
/* main方法里呼叫階乘方法 */
public static void main(String[] args) {
System.out.println(factorial(5));
}
/* 利用遞回進行階乘的計算 */
public static int factorial(int n) {
if (n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
}
六、可變引數
語法:
typeName... parameterName
描述:
- 從Java5開始支持傳遞同型別的可變引數給一個方法,
- 使用方式為在方法宣告的時候,在引數串列中,在指定的形式引數型別后加一個三點省略號,
注意:
- 一個方法宣告的時候只能指定一個可變引數,它必須是方法的最后一個形式引數,
- 方法宣告的時候,任何普通的形式引數必須在可變引數之前宣告,
示例:
/* 運行main方法,結果為在控制臺依次輸出:1 2 3 4 5 */
public class TestVariable {
/* main方法里呼叫可變引數方法 */
public static void main(String[] args) {
variable(1, 2, 3, 4, 5);
}
/* 遍歷列印可變引數 */
public static void variable(int... nums) {
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
}
七、'main'方法命令列傳參
描述:
- 有時候希望一個程式運行的時候再傳遞給它資訊,這要靠傳遞命令列引數給'main'方法實作,
- 命令列引數是在用命令列執行程式時候緊跟在程式名字后面的資訊,
示例:
-
Java代碼
/* 在mian方法中遍歷列印args引數 */ public class CommandLine { public static void main(String[] args){ for(int i=0; i<args.length; i++){ System.out.println("args[" + i + "]: " + args[i]); } } } -
CMD命令
D:\studyworkspace\springboot-demo\src\main\java\com\conyoo\springbootdemo\test> javac CommandLine.java D:\studyworkspace\springboot-demo\src\main\java\com\conyoo\springbootdemo\test>cd D:\studyworkspace\springboot-demo\src\main\java D:\studyworkspace\springboot-demo\src\main\java>java com.conyoo.springbootdemo.test.CommandLine command line 1 2 3 args[0]: command args[1]: line args[2]: 1 args[3]: 2 args[4]: 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/205574.html
標籤:Java
下一篇:java入門基礎課程
