文章目錄
- 前言
- 一、方法的基本用法
- 1.什么是方法
- 2.方法的基本定義
- 3.方法呼叫的執行程序
- 4.方法中的實參和形參
- 二、方法的多載
- 1.多載的概念
- 2.例題分析
- 三、方法的遞回
- 1.遞回定義
- 2.例題分析
- 3.遞回應用場景
- 總結
前言
“方法”又被稱為“函式”,其他的編程語言也有這個概念,重要性不言而喻,在這個文章,將介紹如何定義和使用方法,
一、方法的基本用法
1.什么是方法
在Java中,方法定義在類中,它和類的成員屬性(資料成員)一起構建一個完整的類,構成方法有四大類——回傳值型別、方法名稱、引數、方法體,
方法就像一個功能,當我們需要用到的時候,就去呼叫它,不用的時候就放到一邊,
也可以說它是一本工具書,當我們需要查看的時候,我們就會去找這本書查資料,不用的時候就放在書柜里面,
2.方法的基本定義
//方法定義
public static 方法回傳值 方法名稱([引數型別 形參 …]){
方法體代碼;
[return 回傳值];
}
// 方法呼叫
回傳值變數 = 方法名稱(實參…);
可以看出,方法包含一個方法頭和一個方法體,
回傳值型別:指定了方法回傳的資料型別,它可以是任意有效的型別,包括構造型別(類就是一種構造型別),如果方法沒有回傳值,則其回傳型別必須是void,方法體中的回傳值型別要與方法頭中定義的回傳值型別一致,
public class TestDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
// 方法的呼叫
int ret = add(a, b);
System.out.println("ret = " + ret);
}
// 方法的定義
public static int add(int x, int y) {
return x + y;
}
}

3.方法呼叫的執行程序
- 定義方法的時候, 不會執行方法的代碼. 只有呼叫的時候才會執行.
- 當方法被呼叫的時候, 會將實參賦值給形參.
- 引數傳遞完畢后, 就會執行到方法體代碼.
- 當方法執行完畢之后(遇到 return 陳述句), 就執行完畢, 回到方法呼叫位置繼續往下執行.
- 一個方法可以被多次呼叫
4.方法中的實參和形參
形參:
在定義一個方法時,引數串列中的引數個數至少為1個,
實參:
呼叫方法時,需要呼叫者提供與原方法定義相匹配的引數(型別、數量、順序都一致)
那么形參與實參的關系又是怎樣的呢?
- 形參變數隸屬于方法體,也就是說它們是方法的區域變數,只有在被呼叫的時候才被創建,才被臨時性分配記憶體,在呼叫結束后,立即釋放所分配的記憶體單元,也就是說,當方法呼叫回傳后,就不能再使用這些引數了,
- 在呼叫方法時,實參和形參在數量上、型別上、順序上應嚴格保證一一對應的關系,否則就會出現引數型別不匹配的錯誤,從而導致呼叫方法失敗,如下:

二、方法的多載
1.多載的概念
【概念】
方法多載是指在一個類中定義多個同名的方法,但要求每個方法具有不同的引數的型別或引數的個數,呼叫多載方法時,Java編譯器能通過檢查呼叫的方法的引數型別和個數選擇一個恰當的方法,
2.例題分析
認真看下面例子中的add方法
public static void main(String[] args) {
int a = 10;
int b = 20;
int ret = add(a, b);
System.out.println("ret = " + ret);
double a2 = 10.5;
double b2 = 20.5;
double ret2 = add(a2, b2);
System.out.println("ret2 = " + ret2);
double a3 = 10.5;
double b3 = 10.5;
double c3 = 20.5;
double ret3 = add(a3, b3, c3);
System.out.println("ret3 = " + ret3);
}
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static double add(double x, double y, double z) {
return x + y + z;
}
【總結】
方法的名字都叫 add. 但是有的 add 是計算 int 相加, 有的是 double 相加; 有的計算兩個數字相加, 有的是計算三個數
字相加.
同一個方法名字, 提供不同版本的實作, 稱為 方法多載
【注意】
一.方法名一定要相同,
二.方法的引數表必須不同,包括引數的型別或個數,以此區分不同的方法體,
1.如果引數個數不同,就不管它的引數型別了!
2.如果引數個數相同,那么引數的型別必須不同,
三.方法的回傳型別、修飾符可以相同,也可不同,
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
三、方法的遞回
1.遞回定義
簡單來說,遞回算是套娃,
從前有座山,山里有座廟,廟里有個老和尚,老和尚正在給小和尚講故事:從前有座山,山里有座廟,廟里有個老和尚,老和尚正在給小和尚講故事:…
除非老和尚不講了,否則這個故事就一直套娃下去,
遞回,就是在運行的程序中呼叫自己,
構成遞回需具備的條件:
- 子問題須與原始問題為同樣的事,且更為簡單;
- 不能無限制地呼叫本身,須有個出口,化簡為非遞回狀況處理,
2.例題分析
舉個例子:遞回求 N 的階乘
public static void main(String[] args) {
int n = 5;
int ret = factor(n);
System.out.println("ret = " + ret);
}
public static int factor(int n) {
System.out.println("函式開始, n = " + n);
if (n == 1) {
System.out.println("函式結束, n = 1 ret = 1");
return 1;
}else{
int ret = n * factor(n - 1);
System.out.println("函式結束, n = " + n + " ret = " + ret);
return ret;
}
}
分析遞回程序如下:



3.遞回應用場景
遞回演算法一般用于解決三類問題:
- 資料的定義是按遞回定義的,(Fibonacci函式)
- 問題解法按遞回演算法實作,這類問題雖則本身沒有明顯的遞回結構,但用遞回求解比迭代求解更簡單,如Hanoi問題,
- 資料的結構形式是按遞回定義的,如二叉樹、廣義表等,由于結構本身固有的遞回特性,則它們的操作可遞回地描述,
【注意】
雖然遞回操作有很多的優點,但是缺點也很明顯
- 使用遞回實作需要函式壓堆疊和彈堆疊的操作,所以程式的運行速度比不用遞回實作要慢得多,如果操作不慎,還極易出現死回圈,所以在使用遞回一定要設定遞回操作的終止條件,
下面給大家推薦遞回的兩個經典例題:
- 求斐波那契數列的第 N 項
- 求解漢諾塔問題(提示, 使用遞回)
- 青蛙跳臺階問題(提示, 使用遞回)
有興趣的同學可以去自行嘗試!
總結
最近在看《士兵突擊》,迷惘了,希望能夠找點東西激勵自己,《士兵突擊》在某種程度上,真的讓我感悟良多,推薦大家去看看,
里面的臺詞讓我受益良多,
“心穩了,手也就穩了”
“想到和得到之間還有兩個字,就是做到”
各位,共勉了!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/335537.html
標籤:java
