看到這句話的時候證明:此刻你我都在努力~
加油陌生人~
個人主頁:Gu Gu Study
專欄:一步一步了解Java
喜歡的一句話: 常常會回顧努力的自己,所以要為自己的努力留下足跡。
_ 如果喜歡能否點個贊支持一下,謝謝啦!_
作者:小閉
引言:相信大家在學習C語言后再學習Java時就經常聽到有人說到”方法“,但是當你看到他們所說的方法時,你就會就會感覺到熟悉,你可能就會覺得這不就是C語言中的函數嗎?那么Java中的方法和C語言中的有什么不一樣嗎?其實這兩者確實區別不大,甚至可以說一樣,只不過C語言面向過程的語言而Java是面向對象的語言。所以叫法上是有一點區別的。那么下面我們就來學習一下Java中的方法的知識吧。
什么是方法以及方法存在的意義
在我看來方法就是將一些代碼封裝起來的一片代碼塊,這個代碼塊可以完成一個單獨的功能比如:加法,加法,除法等。再比如:面向對象時有個對象的“說話”功能。
方法存在的意義:
- 是能夠模塊化的組織代碼(當代碼規模比較復雜的時候).
- 做到代碼被重復使用, 一份代碼可以在多個位置使用.
- 讓代碼更好理解更簡單.
- 直接調用現有方法開發, 不必重復造輪子.
給大家舉一個例子:
public static void func1() {int year = 1900;if ((0 == year % 4 && 0 != year % 100) || 0 == year % 400) {System.out.println(year + "年是閏年");} else {System.out.println(year + "年不是閏年");}}
如上就是Java中的一個方法,確實與C語言的函數差不多,差別就是語法上的不一樣。上面的代碼就是:將判斷一個年份是否為閏年的代碼寫到這一塊地方,而這一塊地方就是方法。
方法的定義
** 修飾符 返回值類型 方法名稱(參數類型 形參 ){ **
**方法體代碼; **
return 返回值;
** } **
其中返回值也可以沒有,這時返回值類型就為void。
如下我們就示例一下:
public static void func1() {int year = 1900;if ((0 == year % 4 && 0 != year % 100) || 0 == year % 400) {System.out.println(year + "年是閏年");} else {System.out.println(year + "年不是閏年");}
}
在定義一個實現加法的方法:
public static int func2(int a,int b){return a+b; }
注意事項:
- 返回值類型:如果方法有返回值,返回值類型必須要與返回的實體類型一致,如果沒有返回值,必須寫成
void- 方法名字:采用小駝峰命名
小駝峰即:setName,setNum,亦或是find,found。- 參數列表:如果方法沒有參數,()中什么都不寫,如果有參數,需指定參數類型,多個參數之間使用逗號隔開
- 方法體:方法內部要執行的語句
- 在java當中,方法必須寫在類當中
- 在java當中,方法不能嵌套定義
- 在java當中,沒有方法聲明一說
- 【方法調用過程】 調用方法—>傳遞參數—>找到方法地址—>執行被調方法的方法體—>被調方法結束返回—>回到主調方法繼續往下 執行
如下是一個完整的方法運用過程:
public class Main {
public static void main(String[] args) { int sum = 0;for (int i = 1; i <= 5; i++) {sum += fac(i);} System.out.println("sum = " + sum);
} public static int fac(int n) {System.out.println("計算 n 的階乘中n! = " + n);int result = 1;for (int i = 1; i <= n; i++) {result *= i;} return result;}}
實參和形參
那么何為實參何為形參呢?下面我們通過一個代碼進行詳細解析:
public static int fac(int n) { //這里n為形參System.out.println("計算 n 的階乘中n! = " + n);int result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;
}public static void main(String[] args) {int n=5;int num=fac(n); //這里n為實參System.out.println(c);}
調用方法時,給方法傳值的是實參,拷貝傳來的值的變量為形參。
注意:
Java中沒有C語言中的傳值調用和傳址調用的區別。Java中無法拿到實參的地址的,所以可以簡單的理解為如果傳參傳時的數據類型為_基本類型數據_那么這就是相當于C語言的傳值調用 。對此的總結還是那句話。
總結:形參只是實參的臨時拷貝,形參的改變不會影響實參。(這是針對基本數據類型來說的)
如下:
public static void main(String[] args) {int a = 10;int b = 20;swap(a, b);System.out.println("main: a = " + a + " b = " + b);
}
public static void swap(int x, int y) {int tmp = x;x = y;y = tmp;System.out.println("swap: x = " + x + " y = " + y);
}
實參a和b是main方法中的兩個變量,其空間在main方法的棧(一塊特殊的內存空間)中,而形參x和y是swap方法中 的兩個變量,x和y的空間在swap方法運行時的棧中,因此:實參a和b 與 形參x和y是兩個沒有任何關聯性的變量, 在swap方法調用時,只是將實參a和b中的值拷貝了一份傳遞給了形參x和y,因此對形參x和y操作不會對實參a和b 產生任何影響。
方法重載
- 什么是方法重載?
方法重載(Overloading)是面向對象編程(OOP)中的一個重要概念,它允許在同一個類中定義多個具有相同名稱但參數列表不同的方法。這是多態性的一種形式,使得同一個操作可以應用于不同的數據類型。 - 方法重載的條件
要實現方法重載,需要滿足以下條件:
方法名相同:重載的方法必須具有相同的方法名。
參數列表不同:參數列表可以是參數數量不同,參數類型不同,或者參數順序不同。
返回類型可相同可不同:方法的返回類型可以相同,也可以不同,但這并不是重載的決定性因素。
3. 方法重載的優點:
代碼復用:通過重載,可以復用相同的方法名,減少代碼冗余。
提高代碼可讀性:使用相同的方法名可以提高代碼的可讀性,使得代碼更加直觀易懂。
增強靈活性:允許開發者根據不同的參數類型調用不同的方法,增強了程序的靈活性。
4. 方法重載的實現
以下是Java語言中實現方法重載的一個簡單示例:
public class Calculator {
// 加法方法重載示例
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {return a + b;
}public int add(int a, int b, int c) {return a + b + c;
}}
在這個例子中,Calculator類定義了三個add方法,它們具有相同的方法名,但是參數列表不同。
- 編譯器如何區分重載方法
編譯器在調用重載方法時,會根據方法調用時提供的參數類型和數量來確定調用哪個方法。編譯器會尋找與調用時參數最匹配的方法。 - 注意事項:
參數類型和數量:重載方法時,參數的類型和數量是關鍵,而返回類型不是。
可變參數:在某些語言中,如Java,可以使用可變參數(Varargs)來實現方法重載。
構造函數重載:構造函數也可以被重載,以支持不同的初始化方式。 - 結論
方法重載是一種強大的編程技術,它允許開發者編寫更加靈活和可讀的代碼。通過合理使用方法重載,可以提高程序的可維護性和擴展性。
方法的遞歸
了解遞歸思想
把?個大型復雜問題層層轉化為?個與原問題相似,但規模較小的子問題來求解;直到子問題不能再 被拆分,遞歸就結束了。所以遞歸的思考方式就是把大事化小的過程。 遞歸中的遞就是遞推的意思,歸就是回歸的意思,接下來慢慢來體會
遞歸的兩個重要條件
**遞歸在書寫的時候,有2個必要條件:
一、遞歸存在限制條件,當滿足這個限制條件的時候,遞歸便不再繼續。 **
二、每次遞歸調?之后越來越接近這個限制條件。
下面是一個求3的階乘的代碼,運用遞歸來完成。
public class Test {public static int function(int n){if(n==1){//遞歸終止條件return 1;}else{//遞歸調用return function(n - 1) * n;}}public static void main(String[] args) {int num = 3;int ret =function(num);System.out.println(ret);}
}
下面給大家畫一下一個大概的流程圖
以上就是今天的所有的知識了,喜歡的話可以點個贊哦!