【一步一步了解Java系列】:Java中的方法對標C語言中的函數

看到這句話的時候證明:此刻你我都在努力~
加油陌生人~


微信圖片編輯_20240229212205.png

個人主頁:Gu Gu Study

專欄:一步一步了解Java

喜歡的一句話: 常常會回顧努力的自己,所以要為自己的努力留下足跡。

_ 如果喜歡能否點個贊支持一下,謝謝啦!_
作者:小閉


引言:相信大家在學習C語言后再學習Java時就經常聽到有人說到”方法“,但是當你看到他們所說的方法時,你就會就會感覺到熟悉,你可能就會覺得這不就是C語言中的函數嗎?那么Java中的方法和C語言中的有什么不一樣嗎?其實這兩者確實區別不大,甚至可以說一樣,只不過C語言面向過程的語言而Java是面向對象的語言。所以叫法上是有一點區別的。那么下面我們就來學習一下Java中的方法的知識吧。


什么是方法以及方法存在的意義

在我看來方法就是將一些代碼封裝起來的一片代碼塊,這個代碼塊可以完成一個單獨的功能比如:加法,加法,除法等。再比如:面向對象時有個對象的“說話”功能。
方法存在的意義:

  • 是能夠模塊化的組織代碼(當代碼規模比較復雜的時候).
  • 做到代碼被重復使用, 一份代碼可以在多個位置使用.
  • 讓代碼更好理解更簡單.
  • 直接調用現有方法開發, 不必重復造輪子.

給大家舉一個例子:

public static void func1() {int year = 1900;if ((0 == year % 4 && 0 != year % 100) || 0 == year % 400) {System.out.println(year + "年是閏年");} else {System.out.println(year + "年不是閏年");}}

如上就是Java中的一個方法,確實與C語言的函數差不多,差別就是語法上的不一樣。上面的代碼就是:將判斷一個年份是否為閏年的代碼寫到這一塊地方,而這一塊地方就是方法。


方法的定義

** 修飾符 返回值類型 方法名稱(參數類型 形參 ){ **
**方法體代碼; **
return 返回值;
** } **

其中返回值也可以沒有,這時返回值類型就為void。
如下我們就示例一下:

public static void func1() {int year = 1900;if ((0 == year % 4 && 0 != year % 100) || 0 == year % 400) {System.out.println(year + "年是閏年");} else {System.out.println(year + "年不是閏年");}
}

在定義一個實現加法的方法:

public static int func2(int a,int b){return a+b;        }

注意事項:

  1. 返回值類型:如果方法有返回值,返回值類型必須要與返回的實體類型一致,如果沒有返回值,必須寫成
    void
  2. 方法名字:采用小駝峰命名
    小駝峰即:setName,setNum,亦或是find,found。
  3. 參數列表:如果方法沒有參數,()中什么都不寫,如果有參數,需指定參數類型,多個參數之間使用逗號隔開
  4. 方法體:方法內部要執行的語句
  5. 在java當中,方法必須寫在類當中
  6. 在java當中,方法不能嵌套定義
  7. 在java當中,沒有方法聲明一說
  8. 【方法調用過程】 調用方法—>傳遞參數—>找到方法地址—>執行被調方法的方法體—>被調方法結束返回—>回到主調方法繼續往下 執行

如下是一個完整的方法運用過程:

public class Main {
public static void main(String[] args) { int sum = 0;for (int i = 1; i <= 5; i++) {sum += fac(i);} System.out.println("sum = " + sum);
} public static int fac(int n) {System.out.println("計算 n 的階乘中n! = " + n);int result = 1;for (int i = 1; i <= n; i++) {result *= i;} return result;}}

image.png

實參和形參

那么何為實參何為形參呢?下面我們通過一個代碼進行詳細解析:

public static int fac(int n) {   //這里n為形參System.out.println("計算 n 的階乘中n! = " + n);int result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;
}public static void main(String[] args) {int n=5;int num=fac(n);   //這里n為實參System.out.println(c);}

調用方法時,給方法傳值的是實參,拷貝傳來的值的變量為形參。
注意:
Java中沒有C語言中的傳值調用和傳址調用的區別。Java中無法拿到實參的地址的,所以可以簡單的理解為如果傳參傳時的數據類型為_基本類型數據_那么這就是相當于C語言的傳值調用 。對此的總結還是那句話。
總結:形參只是實參的臨時拷貝,形參的改變不會影響實參。(這是針對基本數據類型來說的)
如下:

public static void main(String[] args) {int a = 10;int b = 20;swap(a, b);System.out.println("main: a = " + a + " b = " + b);
}
public static void swap(int x, int y) {int tmp = x;x = y;y = tmp;System.out.println("swap: x = " + x + " y = " + y);
}

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


方法重載
  1. 什么是方法重載?
    方法重載(Overloading)是面向對象編程(OOP)中的一個重要概念,它允許在同一個類中定義多個具有相同名稱但參數列表不同的方法。這是多態性的一種形式,使得同一個操作可以應用于不同的數據類型。
  2. 方法重載的條件
    要實現方法重載,需要滿足以下條件:

方法名相同:重載的方法必須具有相同的方法名。
參數列表不同:參數列表可以是參數數量不同,參數類型不同,或者參數順序不同。
返回類型可相同可不同:方法的返回類型可以相同,也可以不同,但這并不是重載的決定性因素。

3. 方法重載的優點:
代碼復用:通過重載,可以復用相同的方法名,減少代碼冗余。
提高代碼可讀性:使用相同的方法名可以提高代碼的可讀性,使得代碼更加直觀易懂。
增強靈活性:允許開發者根據不同的參數類型調用不同的方法,增強了程序的靈活性。
4. 方法重載的實現
以下是Java語言中實現方法重載的一個簡單示例:

public class Calculator {
// 加法方法重載示例
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {return a + b;
}public int add(int a, int b, int c) {return a + b + c;
}}

在這個例子中,Calculator類定義了三個add方法,它們具有相同的方法名,但是參數列表不同。

  1. 編譯器如何區分重載方法
    編譯器在調用重載方法時,會根據方法調用時提供的參數類型和數量來確定調用哪個方法。編譯器會尋找與調用時參數最匹配的方法。
  2. 注意事項:
    參數類型和數量:重載方法時,參數的類型和數量是關鍵,而返回類型不是。
    可變參數:在某些語言中,如Java,可以使用可變參數(Varargs)來實現方法重載。
    構造函數重載:構造函數也可以被重載,以支持不同的初始化方式。
  3. 結論
    方法重載是一種強大的編程技術,它允許開發者編寫更加靈活和可讀的代碼。通過合理使用方法重載,可以提高程序的可維護性和擴展性。
方法的遞歸

了解遞歸思想
把?個大型復雜問題層層轉化為?個與原問題相似,但規模較小的子問題來求解;直到子問題不能再 被拆分,遞歸就結束了。所以遞歸的思考方式就是把大事化小的過程。 遞歸中的遞就是遞推的意思,歸就是回歸的意思,接下來慢慢來體會

遞歸的兩個重要條件
**遞歸在書寫的時候,有2個必要條件:

一、遞歸存在限制條件,當滿足這個限制條件的時候,遞歸便不再繼續。 **
二、每次遞歸調?之后越來越接近這個限制條件。


下面是一個求3的階乘的代碼,運用遞歸來完成。
public class Test {public static int function(int n){if(n==1){//遞歸終止條件return 1;}else{//遞歸調用return function(n - 1) * n;}}public static void main(String[] args) {int num = 3;int ret =function(num);System.out.println(ret);}
}

下面給大家畫一下一個大概的流程圖
image.png
以上就是今天的所有的知識了,喜歡的話可以點個贊哦!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15622.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15622.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15622.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Xfce4桌面背景和桌面圖標消失問題解決@FreeBSD

問題&#xff1a;Xfce4桌面背景和桌面圖標消失 以前碰到過好幾次桌面背景和桌面圖標消失&#xff0c;整個桌面除了上面一條和下面中間的工具條&#xff0c;其它地方全是黑色的問題&#xff0c;但是這次重啟之后也沒有修復&#xff0c;整個桌面烏黑一片&#xff0c;啥都沒有&am…

認知V2X的技術列一個學習大綱

為了深入學習和理解V2X&#xff08;Vehicle to Everything&#xff09;技術&#xff0c;以下是一個學習大綱的概述&#xff0c;結合了參考文章中的相關數字和信息&#xff1a; 一、V2X技術基礎 V2X概述 定義&#xff1a;V2X是車用無線通信技術&#xff0c;將車輛與一切事物相連…

WebService相關內容

WebService中的wsdl什么意思? WSDL(Web Services Description Language)Web服務描述語言及其功能、操作、參數和返回值的XML格式的語言。它在Java和其他編程語言中都可以使用,用于定義Web服務的接口以及如何與這些服務進行交互。 WSDL的作用 WSDL的主要作用是提供一種標準…

idea上傳git命令

git init git remote add origin git add . git commit -m "標題" git push -u origin master

Qt 模型視圖詳細介紹

一.文件系統模型&#xff08;QFileSystemModel&#xff09; 1.定義 QFileSystemModel 是 Qt 框架中的一個類&#xff0c;它提供了一個用于管理文件系統結構的模型。它可以用于顯示文件系統的目錄結構&#xff0c;以及在視圖中顯示文件和文件夾的詳細信息。 這個模型將文件系統…

15分鐘Element-UI快速入門

Element-UI 是一個基于 Vue.js 2.0 的桌面端組件庫&#xff0c;它提供了豐富的、可復用的組件&#xff0c;幫助開發者快速構建出美觀且功能強大的網頁應用。以下是一個 Element-UI 的快速入門指南&#xff1a; 1. 安裝 Element-UI 首先&#xff0c;你需要在你的 Vue.js 項目中…

各種測試方法,黑盒測試、白盒測試,靜態測試,動態測試

1.測試方法 軟件測試方法的分類有很多種&#xff0c;以測試過程中程序執行狀態為依據可分為靜態測試 (Static Testing,ST) 和動態測試 (Dynamic Testing,DT); 以具體實現算法細節和系統內部結構的相 關情況為根據可分黑盒測試、白盒測試和灰盒測試3類&#xff1b;從程序執行的方…

Python編程之調試魔法與列表逆轉之謎

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、調試魔法&#xff1a;揭開Python編程的神秘面紗 代碼調試實例 二、列表逆轉之謎&#…

實驗一:通過路由器實現內外網互聯

通過路由器實現內外網互聯 一、實驗拓撲 相關配置詳見下圖&#xff0c;內網區域為AR2以內設備&#xff0c;外網區域以AR1和PC1代替進行實驗測試。 二、實驗要求 通過路由器實現內外網互聯&#xff1a; 1.各內網PC可自動獲取ip地址&#xff1b; 2.各內網PC可ping通外網PC&…

SCSS 基本使用詳解

一、引言 SCSS 是 Sass&#xff08;Syntactically Awesome Stylesheets&#xff09;的其中一種語法&#xff0c;是一種預處理器腳本語言&#xff0c;能夠擴展 CSS 的功能&#xff0c;使其更加強大和高效。SCSS 保留了 CSS 的原有語法&#xff0c;同時增加了變量、嵌套規則、混…

藍海卓越計費管理系統 agent_setstate.php SQL注入漏洞復現

0x01 產品簡介 藍海卓越計費管理系統是一套以實現網絡運營為基礎,增強全局安全為中心,提高管理效率為目的的網絡安全運營管理系統,提供“高安全、可運營、易管理”的運營管理體驗,基于標準的RADIUS協議開發,它不僅支持PPPOE和WEB認證計費,還支持802.1X接入控制技術,與其…

WordPress外貿網站建設的成功要素與技術點

WordPress作為一款強大的建站平臺&#xff0c;為外貿企業提供了豐富的功能和靈活的定制選項。在這篇文章中&#xff0c;我們將揭示一些成功建站的秘笈&#xff0c;涵蓋了WordPress外貿網站建設中的關鍵要素和技術點&#xff0c;幫助您打造一個引領行業的成功網站。 1. 選擇合適…

【java深入學習第3章】利用 Spring Boot 和 Screw 快速生成數據庫設計文檔

免費多模型AI網站,支持豆包、GPT-4o、谷歌Gemini等AI模型&#xff0c;無限制使用&#xff0c;快去白嫖&#x1f449;海鯨AI&#x1f525;&#x1f525;&#x1f525; 在開發過程中&#xff0c;數據庫設計文檔是非常重要的&#xff0c;它可以幫助開發者理解數據庫結構&#xff0…

Kubernetes部署dashboard

Kubernetes部署dashboard Kubernetes集群安裝 鯤鵬arm64架構下安裝KubeSphere linux安裝部署k8s(kubernetes)和解決遇到的坑 dashboard部署 $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashbo…

STM32學習和實踐筆記(30):窗口看門狗(WWDG)實驗

1.WWDG介紹 1.1 WWDG簡介 上一章我們已經介紹了IWDG&#xff0c;知道它的工作原理就是一個12位遞減計數器不斷遞減計數&#xff0c;當減到0之前還未進行喂狗的話&#xff0c;產生一個MCU復位。 窗口看門狗WWDG其實和獨立看門狗類似&#xff0c;它是一個7位遞減計數器不斷的往…

Vue3在Element UI 表格中自定義時間格式化顯示

Vue3在Element UI 表格中自定義時間格式化顯示 一、前言1、準備工作2、實現步驟1. 引入 Element UI 組件2. 自定義時間格式化函數3. 格式化日期邏輯 3、完整示例4、結論 一、前言 在開發 Web 應用程序時&#xff0c;常常需要在表格中展示時間數據。Element UI 是一個流行的 Vu…

【Python】 如何在Python中創建GUID UUID

基本原理 GUID&#xff08;全局唯一標識符&#xff09;和UUID&#xff08;通用唯一標識符&#xff09;都是用來在分布式系統中唯一標識信息的。在Python中&#xff0c;我們可以使用內置的uuid模塊來生成這些唯一標識符。 UUID有幾種不同的版本&#xff0c;每種版本都有其特定…

軟考-必須要背的內容

一、設計模式 1、創建型 抽象工廠&#xff1a;提供一個接口&#xff0c;創建一系列的相關相互依賴的對象&#xff0c;無需指定具體的類&#xff1b; eg&#xff1a;系統軟件&#xff0c;支持多種數據庫 生成器&#xff1a;將一個復雜類的表示與構造相分離&#xff0c;使得相…

Scrapy順序執行多個爬蟲

Scrapy順序執行多個爬蟲 有兩種方式&#xff1a; 第一種&#xff1a;bat方式運行 新建bat文件 cd C:\python_web\spiders\tiktokSelenium & C: & scrapy crawl spider1 & scrapy crawl spider2 & scrapy crawl spider3 & scrapy crawl spider4 第二種&a…

IOS開發者證書快捷申請

App Uploader 在進行iOS應用開發中,可以借助appuploader輔助工具進行證書制作、上傳和安裝測試等操作。首先,您需要訪問官方網站獲取最新版本的appuploader。最新版本已經優化了與Apple賬號的登錄流程,無需支付688元,并提供了Windows版和Mac版供用戶選擇。下載完成后,解壓…