目錄
- 第一章:函數or方法
- 1.1什麼是方法?
- 2.1定義方法的文法機制?
- 3.1方法記憶體加載的過程
- 第二章:方法重載
- 1.1重載的概念
- 2.1方法重載的條件
- 一起學習,快樂程式設計,歡迎攻城獅們多多交流
第一章:函數or方法
1.1什麼是方法?
方法定義就是具有特定功能的一段 獨立小程式,可以被多次使用
實作代碼複用,提高複用性。
定義函數過程:
- 是一個封閉區間,需要大括号封裝。
- 需要給這個區間起名字,以後多次使用該區間。
- 為區間提供資料的輸入,以便使用額外資料進行運算。
- 需要定義結果類型。
2.1定義方法的文法機制?
[修飾符清單] 傳回值類型 方法名(形參清單){
方法體;
return 傳回值;
// return 關鍵字用于結束,并将傳回值傳回給調用者
// 注意如果 傳回值類型為void 可以省略return 其他情況下 return必有 并且return後面不能再有語句
}
1.關于修飾符清單:(可選項,public,private等)
2.關于傳回值類型:
①Java中的合法資料類型。(基本and 引用)
②傳回值類型:一般指,一個方法執行結束後的資料結果。
③void表示方法執行結束後不傳回任何結果。
④如果傳回值類型不是void,必須使用"return 值;"
⑤有return執行,目前方法必然結束。
3.方法名:見名知意。首字母小寫後面每個單詞首字母大寫。
4.形參:形參清單中,每個資料為局部變量,方法結束後釋放。
代碼示範:
public class Demo06 {
public static void main(String[] args) {
int sum = add(3,4);
System.out.println("sum = "+sum);
}
public static int add(int num01,int num02){
return num01 + num02;
}
}
3.1方法記憶體加載的過程
public class Demo06 {
public static void main(String[] args) {
int a = 3;
int b = 4;
int sum = add(a,b);
System.out.println("sum = "+sum);
}
public static int add(int num01,int num02){
return num01 + num02;
}
}
說明:
1. JVM加載main方法進入 棧記憶體 中,并執行main的方法。執行到4 、5行先給a、b開辟空間,并指派。
2. 第6行,先将add函數壓進 棧記憶體 中,執行add函數。在add函數所屬空間裡 再開辟兩片空間給num01和num02,接收main傳來的值 3,4.
3. 執行add函數,并将結果return給main中調用的地方,然後add函數彈棧。
4. main方法将add函數執行的結果給sum變量。然後繼續進行。全部執行完,main方法彈棧。
第二章:方法重載
java為我們提供了重載這個功能,使用重載就可以解決某個功能不同場合的泛用性,一個函數的多個版本。
1.1重載的概念
在一個類中,允許存在一個以上同名函數,隻要他們的參數清單(個數和類型)不同。就形成了重載,函數重載和傳回值無關。
(功能相似的代碼,使用相同代碼名。)
2.1方法重載的條件
1.必須在同一個類中。
2.方法名相同。
3.參數清單不同。(個數不同,類型不同,順序不同)
println就是一個方法,使用重載!!
代碼示範:
public class Demo07 {
// 方法{}裡的内容為方法體
public static int computer(int a,int b){
return a+b;
}
public static int computer(int a, int b ,int c){
return a+b+c;
}
public static double computer(double a, double b){
return a/b;
}
// public static double computer(double num01, double num02){
// return 0;
// } 函數的參數是一種形式參數
// public static int computer(double a, double b){
// return (int)a/b;
// }
public static void main(String[] args) {
computer(2.3,1.7); // JVM不知道調用結果的 如果重載跟傳回值有關 調用時就會産生歧義
computer(1.0,2.0); // 參數名也是不會認為是參數清單的屬性,名稱隻是形式,是以參數清單裡的參數名全是形式參數
}
}
void show(int a,float b,char c){} 為藍本
1. int show(int x,float y,char z) 沒有
2. void show(float b,int a, char c) 有
3. void show(int c,float a,char b) 沒有
4. void show(int a,int b,int c) 有
5. double show()有