一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java程序中方法的用法重載和遞歸

Java程序中方法的用法重載和遞歸

2022-02-28 00:50波風張三 Java教程

Java語言中的“方法”在其他語言當中也可能被稱為“函數(shù)”(Function)。對于一些復雜的代碼邏輯,如果希望重復使用這些代碼,并且做到“隨時任意使用”,那么就可以將這些代碼放在一個大括號“{}”當中,并且起一個名字。使

前言

“方法”又被稱為“函數(shù)”,其他的編程語言也有這個概念,重要性不言而喻,在這個文章,將介紹如何定義和使用方法。

 

一、方法的基本用法

1.什么是方法

在Java中,方法定義在類中,它和類的成員屬性(數(shù)據(jù)成員)一起構建一個完整的類。構成方法有四大類――返回值類型、方法名稱、參數(shù)、方法體。

方法就像一個功能,當我們需要用到的時候,就去調用它,不用的時候就放到一邊。

也可以說它是一本工具書,當我們需要查看的時候,我們就會去找這本書查資料,不用的時候就放在書柜里面。

2.方法的基本定義

//方法定義
public static 方法返回值 方法名稱([參數(shù)類型 形參 …]){
方法體代碼;
[return 返回值];
}
// 方法調用
返回值變量 = 方法名稱(實參…);

可以看出,方法包含一個方法頭和一個方法體。

返回值類型:指定了方法返回的數(shù)據(jù)類型。它可以是任意有效的類型,包括構造類型(類就是一種構造類型)。如果方法沒有返回值,則其返回類型必須是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;
  }
}

Java程序中方法的用法重載和遞歸

3.方法調用的執(zhí)行過程

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

4.方法中的實參和形參

形參:

在定義一個方法時,參數(shù)列表中的參數(shù)個數(shù)至少為1個。

實參:

調用方法時,需要調用者提供與原方法定義相匹配的參數(shù)(類型、數(shù)量、順序都一致)

Java程序中方法的用法重載和遞歸

那么形參與實參的關系又是怎樣的呢?

  • 形參變量隸屬于方法體,也就是說它們是方法的局部變量,只有在被調用的時候才被創(chuàng)建,才被臨時性分配內存,在調用結束后,立即釋放所分配的內存單元。也就是說,當方法調用返回后,就不能再使用這些參數(shù)了。
  • 在調用方法時,實參和形參在數(shù)量上、類型上、順序上應嚴格保證一一對應的關系,否則就會出現(xiàn)參數(shù)類型不匹配的錯誤,從而導致調用方法失敗。如下:

Java程序中方法的用法重載和遞歸

 

二、方法的重載

1.重載的概念

【概念】

方法重載是指在一個類中定義多個同名的方法,但要求每個方法具有不同的參數(shù)的類型或參數(shù)的個數(shù)。調用重載方法時,Java編譯器能通過檢查調用的方法的參數(shù)類型和個數(shù)選擇一個恰當?shù)姆椒ā?/p>

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;
  }


Java程序中方法的用法重載和遞歸

【總結】

方法的名字都叫 add. 但是有的 add 是計算 int 相加, 有的是 double 相加; 有的計算兩個數(shù)字相加, 有的是計算三個數(shù)
字相加.
同一個方法名字, 提供不同版本的實現(xiàn), 稱為 方法重載

【注意】

一.方法名一定要相同。
二.方法的參數(shù)表必須不同,包括參數(shù)的類型或個數(shù),以此區(qū)分不同的方法體。
1.如果參數(shù)個數(shù)不同,就不管它的參數(shù)類型了!
2.如果參數(shù)個數(shù)相同,那么參數(shù)的類型必須不同。
三.方法的返回類型、修飾符可以相同,也可不同。

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("函數(shù)開始, n = " + n);
      if (n == 1) {
          System.out.println("函數(shù)結束, n = 1 ret = 1");
          return 1;
   }else{
          int ret = n * factor(n - 1);
          System.out.println("函數(shù)結束, n = " + n + " ret = " + ret);
          return ret;
      }
  }

分析遞歸過程如下:

Java程序中方法的用法重載和遞歸

Java程序中方法的用法重載和遞歸

Java程序中方法的用法重載和遞歸

3.遞歸應用場景

遞歸算法一般用于解決三類問題:

  • 數(shù)據(jù)的定義是按遞歸定義的。(Fibonacci函數(shù))
  • 問題解法按遞歸算法實現(xiàn)。這類問題雖則本身沒有明顯的遞歸結構,但用遞歸求解比迭代求解更簡單,如Hanoi問題。
  • 數(shù)據(jù)的結構形式是按遞歸定義的。如二叉樹、廣義表等,由于結構本身固有的遞歸特性,則它們的操作可遞歸地描述。

【注意】

雖然遞歸操作有很多的優(yōu)點,但是缺點也很明顯

  • 使用遞歸實現(xiàn)需要函數(shù)壓棧和彈棧的操作,所以程序的運行速度比不用遞歸實現(xiàn)要慢得多。如果操作不慎,還極易出現(xiàn)死循環(huán),所以在使用遞歸一定要設置遞歸操作的終止條件。

下面給大家推薦遞歸的兩個經典例題:

  • 求斐波那契數(shù)列的第 N 項
  • 求解漢諾塔問題(提示, 使用遞歸)
  • 青蛙跳臺階問題(提示, 使用遞歸)

有興趣的同學可以去自行嘗試!

 

總結

最近在看《士兵突擊》,迷惘了,希望能夠找點東西激勵自己。《士兵突擊》在某種程度上,真的讓我感悟良多。推薦大家去看看。
里面的臺詞讓我受益良多。
“心穩(wěn)了,手也就穩(wěn)了”
“想到和得到之間還有兩個字,就是做到”

各位,共勉了!

到此這篇關于Java程序中方法的用法重載和遞歸的文章就介紹到這了,更多相關Java 方法 內容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_46913665/article/details/120926215

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 蛮荒的童话未删减在线观看 | 精品国产一区二区三区国产馆 | 调教校花浣肠开菊 | jk制服白丝超短裙流白浆 | 亚洲风情无码免费视频 | 欧美ggg666| 欧美在线成人免费国产 | 莫莉瑞典1977k | 热99re久久精品精品免费 | 特黄特色大片免费视频大全 | 啪啪免费网址 | 91寡妇天天综合久久影院 | 国产精品亚洲综合久久 | 拿捏小说| 亚洲 欧美 国产 综合 在线 | 亚洲国产精品一区二区三区久久 | 免费在线观看成年人视频 | 国产盗摄女厕美女嘘嘘 | 鸭子玩富婆流白浆视频 | 色五月天天| 青草香蕉精品视频在线观看 | 欧美人禽杂交狂配无删完整 | 国产精品国色综合久久 | 精品国产乱码久久久久久免费 | 久久中文电影 | 色综合久久中文字幕 | 免费观看伦理片 | 美女被狂揉下部羞羞动漫 | 国产午夜一区二区在线观看 | 精品国产麻豆免费人成网站 | 国产成人精品一区二区阿娇陈冠希 | 韩剧消失的眼角膜免费完整版 | 日韩毛片在线视频 | 国产在线精品成人一区二区三区 | 99ri国产在线观看 | 极致堕落(高h) | 国产精品一区二区三 | 精品性久久 | 国产精品久久久久久久久久久久久久 | 小鸟酱视频在线观看 | 免费在线观看网址入口 |