Java方法
1.什么是方法?
Java方法是陳述句的集合,它們在一起執行一個功能,
- 方法是解決一類問題的步驟的有序組合
- 方法包含于類或物件中
- 方法在程式中被創建,在其他地方被參考
設計方法的原則:方法的本意是功能塊,就是實作某個功能的陳述句塊的集合,我們設計的時候,最好保持方法的原子性,就是一個方法只完成一個功能,這樣有利于我們后期的擴展,
2.方法的定義
Java的方法類似于其他語言的函式,是一段用來完成特定功能的代碼片段,一般情況下定義一個方法包含以下語法:
-
方法包含有個方法頭和一個方法體,下面是一個方法的所有部分:
- 修飾符:修飾符,這是可選的,告訴編譯器如何呼叫該方法,定義了該方法的訪問型別,
- 回傳值型別:方法可能會回傳值,returnValueType是方法回傳值的資料型別,有些方法執行所需的操作,但沒有回傳值,在這種情況下,returnValueType是關鍵字void,
- 方法名:方法的實際名稱,方法名和引數表共同構成方法簽名,
- 引數型別:引數像是一個占位符,當方法被呼叫是,傳遞值給引數,這個值被稱為實參或變參,引數串列是指方法的引數型別、順序和引數的個數,引數是可選的,方法可以不包含任何引數,
- 形式引數:在方法被呼叫是用于接收外界輸入的資料,
- 實參:呼叫方法是實際傳給方法的資料,
- 方法體:方法體包含具體的陳述句,定義該方法的功能,
修飾符 回傳值型別 方法名(引數型別 引數名){ ... 方法體 ... return 回傳值; }PS:如果方法存在回傳值,一定要通過return回傳出去,
3.方法呼叫
呼叫方法:物件名.方法名(實參串列)
Java支持兩種呼叫方法的方式,根據方法是否回傳值來選擇,
當方法回傳一個值的時候,方法呼叫通常被當做一個值,例如:
int larger = max(30,40);
如果方法回傳值是void,方法呼叫一定是一條陳述句,
System.out.println("hello,word!");
4.方法的多載
多載就是在一個類中,有相同的函式名稱,但形參不同的函式,
方法的多載的規則:
- 方法名稱必須相同,
- 引數串列必須不同(個數不同、或型別不同、引數排列順序不同等),
- 方法的回傳型別可以相同也可以不同,
- 僅僅回傳型別不同不足以成為方法的多載,
實作理論:方法名相同時,編譯器會根據呼叫方法的引數個數、引數型別等逐個匹配,以選擇對應的方法,如果匹配失敗,則編譯器報錯,
5.可變引數(不定項)
從JDK1.5開始,Java支持傳遞同型別的可變引數給一個方法,(其本質為陣列)
在方法宣告中,在指定引數型別后加一個省略號(…),一個方法中只能指定一個可變引數,它必須是方法的最后一個引數,任何普通的引數必須在之前宣告,
public void test(int...i){ //傳遞的引數必須是同型別
System.out.println(i);
}
public void test(int x,int...i){ //可變引數必須在最后
System.out.println(i);
}
6.遞回
遞回就是A方法呼叫A方法,就是自己呼叫自己,
利用遞回可以用簡單的程式來解決一些復雜的問題,它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞回策略只需要少量的程式就可描述出階梯程序所需要的多次重復計算,大大地減少了程式的代碼量,遞回的能力在于用有限的陳述句來定義物件的無限合集,
遞回結構包括個部分:
遞回頭(遞回的盡頭):什么時候不呼叫自身方法,(最后一次呼叫自身方法的時候)如果沒有頭,將陷入死回圈,
遞回體:什么時候需要呼叫自身方法,
例如:求5的階乘
public class Demo03 {
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n){
if (n == 1) {
return 1;
}else {
return n*f(n-1);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/277284.html
標籤:其他
上一篇:時間戳轉換小工具
下一篇:并查集
