亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一篇文章帶你了解Java方法的使用

 更新時間:2021年08月15日 16:43:29   作者:一朵花花  
這篇文章主要給大家介紹了關(guān)于Java中方法使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

方法的基本用法 

方法定義

方法就是一個功能

方法就是一個代碼片段,類似于 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的代碼,而是能夠解決代碼的問題?。?/p>

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

打斷點

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

注意事項: 

  • 參數(shù)傳遞完畢后,就會執(zhí)行到方法代碼體
  • 定義方法的時候, 不會執(zhí)行方法的代碼. 只有調(diào)用的時候才會執(zhí)行
  • 一個方法可以被多次調(diào)用
  • (遇到 return ) 方法執(zhí)行完畢后,回到方法調(diào)用位置繼續(xù)執(zhí)行
  • 當(dāng)方法被調(diào)用時,會將實參賦值給形參
  • Java中只有按值傳遞 

暫停調(diào)試

在這里插入圖片描述

方法的重復(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 的值

在這里插入圖片描述

實參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);
}

代碼過程分析:

在這里插入圖片描述

遞歸的理解

"遞" "歸"理解:

在這里插入圖片描述

棧的角度理解:

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

在這里插入圖片描述

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

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 通過Java實現(xiàn)bash命令過程解析

    通過Java實現(xiàn)bash命令過程解析

    這篇文章主要介紹了通過Java實現(xiàn)bash命令過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Spring AOP實現(xiàn)復(fù)雜的日志記錄操作(自定義注解)

    Spring AOP實現(xiàn)復(fù)雜的日志記錄操作(自定義注解)

    Spring AOP實現(xiàn)復(fù)雜的日志記錄操作(自定義注解),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Mybatis實現(xiàn)ResultMap結(jié)果集

    Mybatis實現(xiàn)ResultMap結(jié)果集

    本文主要介紹了Mybatis實現(xiàn)ResultMap結(jié)果集,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Spring Boot mybatis-config 和 log4j 輸出sql 日志的方式

    Spring Boot mybatis-config 和 log4j 輸出sql 日志的方式

    這篇文章主要介紹了Spring Boot mybatis-config 和 log4j 輸出sql 日志的方式,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2021-07-07
  • Java transient關(guān)鍵字原理解析

    Java transient關(guān)鍵字原理解析

    這篇文章主要介紹了Java transient關(guān)鍵字原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Java多線程中的Phaser使用解析

    Java多線程中的Phaser使用解析

    這篇文章主要介紹了Java多線程中的Phaser使用解析,java多線程技術(shù)提供了Phaser工具類,Phaser表示“階段器”,用來解決控制多個線程分階段共同完成任務(wù)的情景問題,其作用相比CountDownLatch和CyclicBarrier更加靈活,需要的朋友可以參考下
    2023-11-11
  • Java導(dǎo)出oracle表結(jié)構(gòu)實例詳解

    Java導(dǎo)出oracle表結(jié)構(gòu)實例詳解

    這篇文章主要介紹了 Java導(dǎo)出oracle表結(jié)構(gòu)實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 基于Java回顧之反射的使用分析

    基于Java回顧之反射的使用分析

    本篇文章是對Java反射的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 淺談一下JVM垃圾回收算法

    淺談一下JVM垃圾回收算法

    這篇文章主要介紹了一下JVM垃圾回收算法,Java有著自己一套的內(nèi)存管理機制,不需要開發(fā)者去手動釋放內(nèi)存,開發(fā)者只需要寫好代碼即可,運行過程中產(chǎn)生的垃圾都由JVM回收,需要的朋友可以參考下
    2023-04-04
  • java集合繼承關(guān)系圖分享

    java集合繼承關(guān)系圖分享

    這篇文章主要為大家詳細介紹了java集合繼承關(guān)系圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評論