文章目錄
- 一. 方法的基本用法
- 1. 什么是方法(method)
- 2. 方法定義語法
- (1)方法的基本語法
- (2)方法的呼叫
- (3)Java記憶體結構
- 3. 方法呼叫的執行程序
- 4. 實參和形參的關系(重要)
- 二. 方法的多載
- 1. 多載要解決的問題
- 2. 使用多載
- 3. 多載的規則
- 規則
- 三、方法遞回
- 1.遞回的概念
- 2.遞回執行程序分析
- 3.方法遞回練習
- 完!
本次內容大綱

一. 方法的基本用法
1. 什么是方法(method)
方法 其實就是把一個重復的東西進行封裝,把他封裝成一個功能了,
類似于 C語言的函式,但是又不完全相同,
方法存在的意義(不要背, 重在體會):
- 是能夠模塊化的組織代碼(當代碼規模比較復雜的時候).
- 做到代碼被重復使用, 一份代碼可以在多個位置使用.
- 讓代碼更好理解更簡單.
- 直接呼叫現有方法開發, 不必重復造輪子.
2. 方法定義語法
(1)方法的基本語法

(2)方法的呼叫

代碼示例:
求 1-100 之間的和

編譯結果:

??我們看到,成功的呼叫了方法的內容,同時接收了方法的回傳值,
??在這個代碼練習中,我們知道了方法的基本語法及其呼叫,
(3)Java記憶體結構

??我們對方法的呼叫,是依賴于堆疊的
??每次呼叫一個方法,都會在堆疊上為這個方法開辟一個記憶體,把這個記憶體叫做:堆疊幀.
??以上面的代碼為例,介紹一下方法在記憶體中的存放.

??首先呼叫的方法是main方法,那么此時在記憶體中會開辟一塊main的堆疊幀,此時在main里創建了一個ret變數,在main的記憶體中就存放了ret的空間.
??此時再呼叫add方法,再次開辟一個堆疊幀,形參為n,存放n的空間,往下走 創建了一個sum 的變數,在存放一個sum的空間,進入回圈有創建了一個 i 的變數.
??此時堆疊空間的存放情況:

??add方法return結束陳述句,呼叫完畢后,出堆疊.

??main方法陳述句執行完畢,出堆疊.

??這就是一個完整的方法呼叫程序.
3. 方法呼叫的執行程序
基本規則
1.定義方法的時候, 不會執行方法的代碼. 只有呼叫的時候才會執行.
2.當方法被呼叫的時候, 會將實參賦值給形參.
3.引數傳遞完畢后, 就會執行到方法體代碼.
4.當方法執行完畢之后(遇到 return 陳述句),回到方法呼叫位置繼續往下執行.
5.一個方法可以被多次呼叫.
4. 實參和形參的關系(重要)
??什么實參?什么是形參?
??讓我們通過下面的代碼示例來認識

我們通過一個練習來知道傳參的使用.
題目要求:用方法來交換兩個整形.
我們看一下下面的代碼是否正確.

看似程序是正確的,我們看一下編譯結果.

并沒有進行交換,那是為什么呢?
??我們知道,我們傳的是實參的值,但是形參只是實參的一份拷貝,所以在swap方法中,我們只是交換的是 x,y 這兩個形參的值,swap方法呼叫完畢后兩個形參的值自動被銷毀,所以實參的值不變.
??在C語言中,我們要想通過函式來交換兩個整形的值,需要進行&其地址操作
??但是我們明確說明:
1.Java中 沒有&取地址符號
2.Java當中 堆疊上的記憶體地址是無法取到的
3.Java中方法傳參只能進行值傳參,不能像C語言進行址傳參.
??那么在Java中如何實作傳地址操作呢?
??答案是傳參考,只要是參考型別就可以,類、介面、抽象類、列舉、String、陣列等…
??具體使用我們會在之后更新的博客中繼續提到.
傳參時實參與形參的注意事項:

如上圖所示:
1.引數的個數、型別、順序都要一 一匹配.
2.方法的回傳值型別與接受型別也要一 一對應.
二. 方法的多載
??有些時候我們需要用一個函式同時兼容多種引數的情況, 我們就可以使用到方法多載.
1. 多載要解決的問題

??我們希望在向add方法傳入兩個double 型別的變數,實作浮點數的加法.
??但是編譯結果:

??我們只能將代碼修改為

??這兩個方法實作的都是同一種功能,將兩個資料進行加法運算.我們對不同的資料還得創建不同型別的函式,這樣是不是過于麻煩,所以在Java中就有了方法多載的概念:用一個函式同時兼容多種引數.
2. 使用多載
??還是對于上面的代碼進行修改:

??方法的名字都叫 add. 但是有的 add 是計算 int 相加, 有的是 double 相加; 甚至有的計算兩個數字相加, 有的還可以是計算三個數字相加.
??同一個方法名字, 提供不同版本的實作, 稱為 方法多載
3. 多載的規則
規則

看下面兩個代碼:

??通過這兩個代碼的例子,我們可以知道在Java編輯器看來,sum 的兩個方法仍然是兩個相同的方法,因為其引數串列相同.所以會進行報錯,所以回傳值對方法的多載沒有影響.
三、方法遞回
1.遞回的概念
??一個方法在執行程序中呼叫自身, 就稱為 “遞回”.
??遞回相當于數學上的 “數學歸納法”, 有一個起始條件, 然后有一個遞推公式.
??遞回的注意點:

1.程式呼叫自己
2.這個遞回程式一定要有一個趨近于中止的條件.
3.核心:寫遞回程式的時候,需要自己來推導一個遞推公式.
例:
我們求 N!
起始條件: N = 1 的時候, N! 為 1. 這個起始條件相當于遞回的結束條件.
遞回公式: 求 N! , 直接不好求, 可以把問題轉換成 N! => N * (N-1)!
代碼實作:
import java.util.Scanner;
public static int fac(int n){
if(n==1){
return 1;
}
return n*fac(n-1);
}
public static void main5(String[] args){
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int ret = fac(N);
System.out.println(ret);
}
2.遞回執行程序分析
??遞回的程式的執行程序不太容易理解, 要想理解清楚遞回, 必須先理解清楚 “方法的執行程序”, 尤其是 “方法執行結束之后, 回到呼叫位置繼續往下執行”.
3.方法遞回練習
??見博客——Java 方法 遞回使用及練習
??好了,這次Java基礎語法——方法使用的知識就分享到這里結束了,希望大家能夠多多練習,熟悉知識,提升自己.最后感謝大家的欣賞與關注!!!
謝謝欣賞!!!
完!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/275783.html
標籤:java
