一、方法重載 1.又被稱為overload 2.方法重載使用場景 功能類似的時候,儘可能仍方法名相同(但是功能不同或者不相似的時候,方法名儘量不同) 3.什麼條件滿足之後,可以構成方法重載 (1)在同一類中;(2)方法名不同;(3)參數列表不同:i.數量不同;ii.順序不同;iii.類型不同 4.方 ...
一、方法重載
1.又被稱為overload
2.方法重載使用場景
功能類似的時候,儘可能仍方法名相同(但是功能不同或者不相似的時候,方法名儘量不同)
3.什麼條件滿足之後,可以構成方法重載
(1)在同一類中;(2)方法名不同;(3)參數列表不同:i.數量不同;ii.順序不同;iii.類型不同
4.方法重載和什麼有關係,和什麼沒有關係?
(1)方法重載和方法名+參數列表無關
(2)方法重載和返回值類型無關
package code_class_file; public class D30_overload { public static void main(String[] args) { m1(); m4(2,4); m5(); } //以下兩個方法構成重載(數量不同) 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 x) {} public static void m3(double x) {} //以下方法編譯錯誤,不屬於方法重載,屬於方法重覆 //public static void m4(int a,int b){} //public static void m4(int b,int a){} //以下方法編譯錯誤,不屬於方法重載,屬於方法錯誤 //void m5(){} //public static void m5(){} }
5.方法重載的具體應用
簡寫列印操作
public static void main(String[] args) { //簡寫列印操作 p("jfshafo"); } public static void p(byte a) { System.out.print(a); } public static void p(short a) { System.out.print(a); } public static void p(char a) { System.out.print(a); } public static void p(int a) { System.out.print(a); } public static void p(long a) { System.out.print(a); } public static void p(float a) { System.out.print(a); } public static void p(double a) { System.out.print(a); } public static void p(boolean a) { System.out.print(a); } public static void p(String a) { System.out.print(a); } public static void p(String[] a) { System.out.print(a); }
二、方法遞歸
1.方法遞歸定義
答:方法調用自身調用自身,稱為遞歸
例子:
a(){
a();
}
2.遞歸是很耗費棧記憶體的,能不用就不用了
以下程式發生了這樣的一個錯誤(不是異常,是錯誤),錯誤發生的時候無法輓回,只有一個結果,那就是JVM停止工作
public static void main(String[] args) { dosome(); } public static dosome() { p("dosome開始"); dosome(); p("dosome結束"); }
3.遞歸必須有結束條件,沒有結束條件會導致棧記憶體溢出
4.有些情況下該功能的實現必須藉助遞歸,例如:目錄拷貝
5.例子:用遞歸寫一個計算1~N的整數求和
public static void main(String[] args) { int N=9; int resultSum = sum(N); System.out.println(resultSum); } public static int sum(int a) { if (a > 1) { return a+sum(a-1); }else { return 1; } }
三、源碼:
D30_overload_and_recursion.java
地址:
https://github.com/ruigege66/Java/blob/master/D30_overload_and_recursion.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料