溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java方法的定義和基本用法

發(fā)布時間:2021-08-16 09:33:22 來源:億速云 閱讀:117 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Java方法的定義和基本用法”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

目錄
  • 方法的基本用法 

    • 方法定義

      • 基本語法格式:

      • 為什么方法一般用public static修飾?

      • 代碼示例:

      • 注意事項: 

    • 方法調(diào)用的調(diào)試過程

      • IDEA 的調(diào)試過程: 

      • 開始調(diào)試,點擊"甲殼蟲"

      • 注意事項: 

      • 暫停調(diào)試

      • 方法的重復(fù)調(diào)用:

    • ?實參和形參的關(guān)系

      • 代碼示例:

      • 原因分析:

      • 解決方法:

      • 結(jié)論: 

  • 方法的重載 (Overload) 

    • 什么是方法重載? 

      • 舉例:

      • 解決方法:

    • ?重載和重寫的區(qū)別是什么?

    • 方法的遞歸 

      • 什么是遞歸?

        • 遞歸代碼示例:

          • 代碼過程分析:

          • 遞歸的理解

      • 總結(jié)

        方法的基本用法 

        方法定義

        方法就是一個功能

        方法就是一個代碼片段,類似于 C 語言中的 “函數(shù)”

        基本語法格式:
        //方法定義
        修飾符 返回值類型 方法名稱([形式參數(shù)列表 ...]){
        	方法體;
         	[return 返回值];
        }

        注意事項:

        在現(xiàn)階段,方法的修飾暫時采用—> public static 固定搭配[ ]內(nèi)部的表示可有可無方法必須定義在類中方法名要采用小駝峰的形式Java中的返回值可有可無,看業(yè)務(wù)需求,若有返回值,返回值類型需要和方法的返回值類型匹配行書參數(shù)列表:形參,是實參的一份拷貝方法體:具體功能的實現(xiàn)
        為什么方法一般用public static修飾?

        因為當(dāng)前所有方法寫完之后,若調(diào)用,都會在main方法中調(diào)用,而main方法是public static的

        代碼示例:
        public class DemoOne {
            // 實現(xiàn)一個兩個整數(shù)相加的方法
            public static int add(int x,int y){
                return x+y;
            }
            public static void main(String[] args) {
                int a = 212;
                int b = 454;
                //方法調(diào)用
                int ret = add(a,b);
                System.out.println(ret);
            }
        }
        注意事項: 
        • 方法定義時,參數(shù)可以沒有,若有參數(shù),每個參數(shù)要指定類型

        • 方法定義時,返回值也可以沒有,比如main方法,如果沒有返回值,則返回值類型必須寫成 void

        • 方法定義不能嵌套

        • Java 中沒有 “函數(shù)聲明” 這個概念

        • 方法必須定義在類之中,方法定義的位置在調(diào)用位置的上方或者下方均可 

        方法調(diào)用的調(diào)試過程

        一個程序猿最厲害的不在于能寫出多牛X的代碼,而是能夠解決代碼的問題??!

        IDEA 的調(diào)試過程: 

        打斷點

        Java方法的定義和基本用法

        開始調(diào)試,點擊"甲殼蟲"

        Java方法的定義和基本用法

        點擊后,會出現(xiàn)下邊這個框

        Java方法的定義和基本用法

        注意事項: 
        • 參數(shù)傳遞完畢后,就會執(zhí)行到方法代碼體

        • 定義方法的時候, 不會執(zhí)行方法的代碼. 只有調(diào)用的時候才會執(zhí)行

        • 一個方法可以被多次調(diào)用

        • (遇到 return ) 方法執(zhí)行完畢后,回到方法調(diào)用位置繼續(xù)執(zhí)行

        • 當(dāng)方法被調(diào)用時,會將實參賦值給形參

        • Java中只有按值傳遞 

        暫停調(diào)試

        Java方法的定義和基本用法

        方法的重復(fù)調(diào)用:
        //求三個數(shù)的最大值
        public static int maxThreeNum(int num1,int num2,int num3){
        	return maxNum(maxNum(num1,num2),num3);     //方法的重復(fù)調(diào)用
        }
        //兩個數(shù)的最大值
        public static int maxNum(int x,int y){
            return x>y ? x : y;
        }
        public static void main(String[] args) {
        	Scanner scan = new Scanner(System.in);
        	int num1 = scan.nextInt();
        	int num2 = scan.nextInt();
        	int num3 = scan.nextInt();
        	int max = maxThreeNum(num1,num2,num3);
        	System.out.println("max="+max);
        }

        ?實參和形參的關(guān)系

        形參只是方法在定義時需要借助的一個變量,用來保存方法在調(diào)用時傳遞過來的值

        代碼示例:
        交換兩個整型變量
        public static void swap(int x,int y){
        	int tmp = x;
        	x = y;
            y = tmp;
        }
        public static void main(String[] args) {
           //交換兩個整數(shù)
            int a = 10;
            int b = 20;
            swap(a,b);
            System.out.println(a + " " + b);
        }

        運行后會發(fā)現(xiàn),這個方法不能實現(xiàn)交換兩個整型變量的功能

        可用類和對象 / 數(shù)組 來實現(xiàn),后邊會講到

        原因分析:

        方法里交換的是形參 x 和 y 的值,而main方法中打印的是實參 a 和 b 的值

        Java方法的定義和基本用法

        實參a和b是main方法中的兩個變量,其空間在main方法的棧(一塊特殊的內(nèi)存空間)中,而形參x和y是swap方法中的兩個變量,x和y的空間在swap方法運行時的棧中,因此:實參a和b 與 形參x和y是兩個沒有任何關(guān)聯(lián)性的變量,在swap方法調(diào)用時,只是將實參a和b中的值拷貝了一份傳遞給了形參x和y,因此對形參x和y操作不會對實參a和b產(chǎn)生任何影響。

        解決方法:

        這里不過多解釋,之后寫數(shù)組章節(jié)再作解釋

        public static void main(String[] args) {
        	int[] arr = {10, 20};
         	swap(arr);
         	System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
        }
        public static void swap(int[] arr) {
         	int tmp = arr[0];
         	arr[0] = arr[1];
         	arr[1] = tmp;
        }
        結(jié)論: 
        • 在Java中,實參的值永遠都是拷貝到形參中,形參和實參本質(zhì)是兩個實體

        • 對于基礎(chǔ)類型來說,形參相當(dāng)于實參的拷貝,即:傳值調(diào)用 

        方法的重載 (Overload) 

        什么是方法重載? 

        舉例:

        在方法sumInt中,若要求兩小數(shù)之和,就不能實現(xiàn),必須再寫一個sumDouble方法,這樣使用很不靈活

        兩整數(shù)之和
        public static int sumInt(int x,int y){
            return x+y;
        }
        兩小數(shù)之和
        public static double sumDouble(double x,double y){
            return x+y;
        }
        解決方法:
        方法1 兩整數(shù)之和 
        public static int sum(int x,int y){
            return x+y;
        }
        方法2 兩小數(shù)之和 
        public static double sum(double x,double y){
            return x+y;
        }
        public static void main(String[] args) {
            double a = 19.9;
            double b = 18.8;
            double ret = sum(a,b); //直接使用 sum
            System.out.println(ret);
        }

        上述方法1 和方法2 的關(guān)系就是重載

        構(gòu)成重載的 3 個條件: 

        • 方法名必須相同

        • 返回值可以不同

        • 參數(shù)列表必須不同(參數(shù)的個數(shù)不同 / 參數(shù)的類型不同)

        • (注意事項) 同一個類當(dāng)中

        ?重載和重寫的區(qū)別是什么?

        方法的重載和重寫都是實現(xiàn)多態(tài)的方式,區(qū)別:重載實現(xiàn)的是編譯時的多態(tài)性,而重寫實現(xiàn)的是運行時的多態(tài)性

        ①.重載發(fā)生在一個類中,同名的方法如果有不同的參數(shù)列表(參數(shù)類型不同 / 參數(shù)個數(shù)不同)則視為重載
        ②.重寫發(fā)生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的參數(shù)列表,有兼容的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常。

        重載對返回類型沒有特殊的要求,不能根據(jù)返回類型進行區(qū)分。

        方法的遞歸 

        什么是遞歸?

        一個方法在執(zhí)行過程中對自身的調(diào)用,稱為"遞歸"

        • 方法要調(diào)用自己本身

        • 要有一個趨近于終止的條件

        • 想辦法推導(dǎo)出"遞歸"的公式 

        遞歸代碼示例:

        求n的階乘:

        public static int factor(int n){
        	if(n == 1){
            	return 1;
        	}
        	return n * factor(n-1);
        }
        代碼過程分析:

        Java方法的定義和基本用法

        遞歸的理解

        "遞" "歸"理解:

        Java方法的定義和基本用法

        棧的角度理解:

        方法的調(diào)用是要在棧上開辟內(nèi)存的,給這個方法開辟棧幀

        Java方法的定義和基本用法

        思考遞歸,要橫向思考,不要試圖去走進遞歸的代碼,代碼執(zhí)行,是縱向執(zhí)行

        “Java方法的定義和基本用法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

        向AI問一下細節(jié)

        免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

        AI