方法的概念:
方法是定義在類中的一段獨立的代碼塊,用來實現某個功能。Java中,方法又被稱爲函數。
函數的主要作用是爲了提高代碼的複用性。
函數都是在棧內存中運行;運行的函數處在棧頂。
函數格式:修飾符 返回值類型 函數名([ 參數類型1 參數名1,參數類型2 參數名2.... ]){
// [ ] 裏面表示可選項,即參數不是必須的
執行語句...
return 返回值; //返回值的類型必須與返回值類型一致
}
說明:
修飾符:
可以是訪問修飾符,也可以說是函數修飾符(abstract
、final
、 static
、synchronized
),還可以是兩者的組合。
返回值類型:
用於限定函數返回值的數據類型。
參數類型:
用於限定調用函數時傳遞的數據類型。
參數名:
是一個變量,用來接收調用方法時傳遞的數據。
return:
用來接收方法以及返回函數指定類型的值。
返回值:
這個值會返回給函數的調用者。
示例:
public class Method {
/*
* 程序入口,主函數 .
* @ 方法 <==> 函數,指的是同一個東西.
*/
public static void main(String[] args) {
// 通過函數名調用
method01();
method02(9, 3);
System.out.println("5+6=" + add(5, 6));
}
/*
* @ 函數的格式爲:
*
* @ 訪問修飾符 返回值類型 函數名(參數類型1 參數名1,參數類型2 參數名2....){
*
* @ 執行語句
*
* @ return 返回值;//返回值的類型必須與返回值類型一致
*
* @ }
*/
/*
* @ 聲明一個靜態函數method01() 無參數無返回值
*/
static void method01() {
System.out.println("這是method01方法,可以通過method01();調用.");
// 這個return可以省略.每個函數都是以return結束,返回到函數調用處
return;
}
/*
* 有參數無返回值
*/
static void method02(int num1, int num2) {
method01();
System.out.println("這是method02方法,第一個參數是" + num1 + "第二個參數是" + num2);
}
/*
* 有返回值的返回值類型要和要返回的數據類型一致
*
* @ 例如:計算兩個整數的和,結果仍然是整型,返回值類型爲int.返回值類型可以說基本數據類型,也可是自定義的數據類型
*/
static int add(int num1, int num2) {
int sum = 0; // 聲明一個整形變量並初始化爲0
sum = num1 + num2;// 將num1和num2的和賦值給sum
return sum;// 將sum的值返回到調用處
}
方法的重載:
函數的重載是指,在同一個類中,可以定義多個函數名相同、參數列表不同的函數。
參數名相同,參數個數不同,參數列表不同均屬於函數重載的情況。注意,函數的重載和返回值類型無關。
調用時通過函數名和參數列表來確定一個函數。
示例:
public class Overloading {
public static void main(String[] args) {
//函數同名,發生重載,調用時通過函數名和參數列表來確定一個函數。
name(5);
name(3, 4);
name(1, 'A');
name('Z', 26);
}
public static void name(int i) {
System.out.println("void name(int i)的函數被調用!");
}
// 與返回值無關,同名函數會發生錯誤
// public static int name(int i) {
// System.out.println("int name(int i)的函數被調用!");
// return i-1;
// }
private static void name(int i, int j) {
System.out.println("name(int i, int j)的函數被調用!");
}
// private static void name(int j,int i) {} //於 name(int i, int
// j)是一樣的,是同一個函數,會發生錯誤
private static void name(int i, char j) {
System.out.println("name(int i, char j)的函數被調用!");
}
private static void name(char j, int i) {
System.out.println("name(char j, int i)的函數被調用!");
}
}
方法的遞歸:
函數的遞歸是指在一個函數的內部調用自身的過程。
遞歸必須要有結束條件,不然就是陷入無限遞歸的狀態,永遠無法結束函數的調用。
示例:
public class Recursion {
public static void main(String[] args) {
int sum = sum(50);// 利用遞歸求1~50的和
System.out.println("1+2+3+4+....+47+38+49+50=" + sum);
}
// 利用遞歸求累加值
private static int sum(int i) {
if (i == 1) {
return 1;
}
return i + sum(i - 1);
}
}