java基礎課堂筆記04 - 方法課時2
p47 方法的過載又稱 @overload
1、過載就是在同一個類中定義多個方法,這些方法完成相似的功能,方法名相同,但形參列表不同
- 這些方法的功能相似,方法名必須相同
- 引數列表必須不同,引數的 型別、個數或順序不同
- 方法名稱相同時,編譯器會根據引數列表逐個匹配,以選擇對應的方法,如果匹配失敗則編譯器報錯
- 返回值型別可以不同,修飾符列表可以不同
2、什麼時候使用過載?
- 當同一個類中,方法執行的功能是相似的,建議方法同名,方便程式設計師程式設計,就像呼叫同一個方法似的,程式碼美觀
- 程式設計師不需要記憶更多的方法名來區分,而是依靠不同的引數列表系統自動選擇對應的方法
3、能構成過載的條件?
* 在同一個類當中
* 方法名相同
* 引數列表不同:型別、順序、個數
4、過載和什麼無關?
* 和方法的返回值型別無關
* 和方法的修飾符列表無關
//例如
//以下兩個方法構成過載
public static void m1(){}
public static void m1(int a){}
//以下兩個方法構成過載
public static void m2(int a, double b){}
public static void m2(double a, int b){}
//以下兩個方法構成過載
public static void m3(int a){}
public static void m3(double a){}
p48 命令列傳參
1、當一個程式執行的時候希望給它傳遞訊息,需要傳遞命令列引數給 main()函式實現
public class CommandLine { public static void main(String[] args) { System.out.println(args.length); for ( int i=0; i<args.length; i++) { System.out.println ("args[" + i + "]:" + args[i]); } } }
Terminal:
javac -encoding utf-8 CommandLine.java
java packageName.CommandLine this is kuangshen
- 3
- args[0]: this
- args[1]: is
- args[2]: kuangshen
在命令列進行編譯 javac:將命令列路徑定位在 .java檔案所在的目錄,編譯 .Java檔案,生成 .class檔案
在命令列執行 java:將命令列路徑定位在 src主類目錄,執行 .class檔案,並傳遞引數(因程式碼頭有包宣告語句 package packPath,故需退至主類目錄下執行)
p49 方法的可變引數
1、可變引數:方法宣告中引數型別後加一個省略號 ...
- 可變引數的本質是一個數組
- 一個方法中只能指定一個可變引數,而且必須是最後一個引數,任何普通的引數必須在它之前宣告
- 所有傳遞引數必須是同一個型別
p50 遞迴
1、遞迴:就是A方法呼叫A方法!自己呼叫自己
- 利用遞迴可以用簡單的程式來解決一些複雜的問題。遞迴策略只需少量的程式就可以描述出解題過程所需要的多次重複計算。遞迴的能力在於用有限的語句來定義物件的無線集合
- 遞迴結構包括兩個部分:
- 遞迴頭:決定了什麼時候不呼叫自身。沒有頭則陷入死迴圈
- 遞迴體:呼叫自身方法語句
//即使再小的帆也能遠航2021-12-17
//即使再小的帆也能遠航