4.方法的使用

方法是指一段具有獨立功能的代碼塊,只有被調用時才會執行

方法的主要作用體現在:

  1. 代碼組織:將原本擠在一起的臃腫代碼按照功能進行分類管理

    • 例如:將用戶注冊的驗證邏輯、數據庫操作、結果返回等分離成不同方法
  2. 提高復用性:相同功能的代碼只需編寫一次,多處調用

    • 例如:計算兩個數最大值的方法可以在程序多個地方復用

方法的定義和調用

public static void 方法名() {// 方法體
}調用方式:方法名();

注意:

????????1.平級關系:方法之間是并列關系,不允許嵌套定義

????????????錯誤示例:

public static void methodA() {public static void methodB() { // 不允許在方法內定義方法// ...}
}

????????2.調用執行:方法不調用就不會執行

????????????????即使定義了多個方法,如果沒有調用它們,這些方法都不會執行

????????3.執行順序:方法的定義順序與執行順序無關,執行順序取決于調用順序

方法的內存機制

????????方法在內存中的生命周期

  1. 未調用時:存放在方法區的字節碼文件中
  2. 調用時:進入棧內存運行
  3. 執行完畢:從棧內存中退出

?????????Java內存結構(部分)?????

???????????方法區:存儲加載的字節碼(.class)文件

????????????????????????字節碼文件是源代碼編譯后的結果,保留了原代碼的結構

???????????棧內存:方法運行時使用的內存區域????????? ? ? ? ?

????????????????????????遵循"先進后出"的原則,方法調用形成調用棧

public static void main(String[] args) {System.out.println("開始");getMax();System.out.println("結束");
}public static void getMax() {int num1=10;int num2=20;int max = num1>num2?num1:num2;System.out.println(max);
}

? 代碼執行流程詳解

????????

  1. main方法入棧:虛擬機自動調用main方法,main方法進入棧內存
  2. 打印"開始":執行第一條語句,控制臺輸出"開始"
  3. 調用getMax方法
    • getMax方法進入棧內存
    • 執行getMax方法體:
      • 定義變量num1=10, num2=20
      • 計算最大值并存儲在max變量中
      • 打印最大值20到控制臺
  4. getMax方法出棧:方法執行完畢,退出棧內存
  5. 繼續執行main方法:打印"結束"
  6. main方法出棧:程序執行完成

帶參數方法的定義和調用

public static void 方法名(數據類型 變量名) {// 方法體
}
// 多個參數:
public static void 方法名(數據類型 變量1, 數據類型 變量2, ...) {// 方法體
}調用方法:方法名(參數值)

??參數類型

  • 形參(形式參數):方法定義時聲明的參數??
  • 實參(實際參數):方法調用時傳入的具體值

帶返回值的定義和調用

public static 返回的數據類型 方法名(數據類型 變量名,……){方法體; return 值}調用的方式:返回的數據類型  變量名 = 方法名(參數值)

方法通用定義格式

public static 返回值類型 方法名(數據類型 變量名,……){方法體;return 數據;
}

定義方法時,要做到兩個明確:

????????明確參數:主要明確參數的類型和數量

????????明確返回值類型:主要時明確方法操作完畢后是否有結果數據,如果有,寫對應的數據類型,如果沒有,寫void

方法的常見問題

? ? ? ? 1.方法不調用不執行

????????2.方法與方法之間是平級關系,不能嵌套定義

????????3.方法的編寫順序和執行順序無關

????????4.方法的返回值類型為void,表示該方法沒有返回值,沒有返回值的方法可以省略return語句不寫,如果要寫return,后面不能跟具體的數據

????????5.return語句下面,不能編寫代碼,因為永遠執行不到,屬于無效代碼x

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

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

相關文章

day21-Excel文件解析

目錄 1. 概述 2. Apache POI 3. XSSF解析Excel文件 3.1. 添加Jar包依賴 3.2. Workbook(Excel文件) 3.2.2. 加載(解析)Excel文件 3.3. Sheet (工作簿) 3.3.1. 創建工作簿 3.3.2. 獲取工作簿 3.3.3.…

與 TRON (波場) 區塊鏈進行交互的命令行工具 (CLI): tstroncli

源碼倉庫 一個基于 Node.js 和 TypeScript 構建的,用于與 TRON (波場) 區塊鏈進行交互的命令行工具 (CLI)。 本項目旨在提供一個簡單、可擴展的框架,讓開發者可以輕松地通過命令行調用 TRON 的 HTTP API,實現查詢鏈上信息、發送交易等操作。…

rabbitmq--默認模式(點對點)

導入包&#xff1a;<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>application.yml springrabbitmq:host: localhostport: 5672username: guestpassword: gue…

外網訪問文檔編輯器Docsify(Windows版本),內網穿透技術應用簡便方法

如果你正在為項目寫文檔&#xff0c;但又不想折騰復雜的構建流程&#xff0c;也不想維護一堆靜態 HTML 文件&#xff0c;那你一定要試試 docsify。docsify 是一個基于 JavaScript 的開源文檔生成工具&#xff0c;它最大的特點就是“無構建”&#xff1a;你只需要寫 Markdown 文…

第4章唯一ID生成器——4.5 美團點評開源方案Leaf

Leaf是美團點評公司基礎研發平臺推出的一個唯一ID生成器服務&#xff0c;其具備高可靠性、低延遲、全局唯一等特點&#xff0c;目前已經被廣泛應用于美團金融、美團外賣、美團酒旅等多個部門。Leaf根據不同業務的需求分別實現了Leaf-segment和Leaf-snowflake兩種方案&#xff0…

分布式搜索和分析引擎Elasticsearch實戰指南

ES 介紹與安裝 Elasticsearch&#xff0c; 簡稱 ES&#xff0c;它是個開源分布式搜索引擎&#xff0c;它的特點有&#xff1a;分布式&#xff0c;零配置&#xff0c;自動發現&#xff0c;索引自動分片&#xff0c;索引副本機制&#xff0c;restful 風格接口&#xff0c;多數據源…

【13】C# 窗體應用WinForm——.NET Framework、WinForm、工程創建、工具箱簡介、窗體屬性及創建

文章目錄1. WinForm工程創建 及 界面介紹1.1 WinForm工程創建1.2 窗體 Form1.cs “查看代碼”1.3 打開窗體設計器2. 工具箱3. 窗體屬性及創建3.1 窗體屬性3.2 實例&#xff1a;創建一個新窗體3.2.1 添加新Windows窗體3.2.2 窗體屬性配置3.2.3 設置該窗體為啟動窗體WinForm 是 W…

論文閱讀-IGEV

文章目錄1 概述2 模塊2.1 總體說明2.2 特征抽取器2.3 CGEV2.4 基于Conv-GRU的更新算子2.5 空間上采樣2.6 損失函數3 效果參考文獻1 概述 在雙目深度估計中&#xff0c;有一類是基于3D卷積的方法&#xff0c;代表就是PSMNet&#xff0c;它應用 3D 卷積編碼器-解碼器來聚合和正則…

[2025CVPR-圖象分類方向]SPARC:用于視覺語言模型中零樣本多標簽識別的分數提示和自適應融合

1. ?背景與問題定義? 視覺語言模型&#xff08;如CLIP&#xff09;在單標簽識別中表現出色&#xff0c;但在零樣本多標簽識別&#xff08;MLR&#xff09;任務中表現不佳。MLR要求模型識別圖像中多個對象&#xff08;例如&#xff0c;圖像包含“貓”和“沙發”&#xff09;&…

2025創始人IP如何破局?

內容持續更新卻無人點贊&#xff0c;課程精心打磨卻無人報名&#xff0c;直播賣力講解卻無人停留 —— 明明有內容、有經驗、有成果&#xff0c;卻始終難以打動用戶。問題的核心&#xff0c;或許在于你尚未打造出真正的 “創始人IP”。?一、創始人IP&#xff1a;不止標簽&…

告別配置混亂!Spring Boot 中 Properties 與 YAML 的深度解析與最佳實踐

一、Spring配置文件 1.1、什么是Spring配置 Spring配置指的是在Spring框架中定義和管理應用程序組件&#xff08;如Bean&#xff09;及其依賴關系的過程 作用&#xff1a; 配置文件主要用于解決硬編碼問題&#xff0c;它將可能變更的信息集中存放。程序啟動時&#xff0c;會從…

無人機噴灑系統技術要點與難點解析

一、 模塊運行方式1. 任務規劃與加載模塊&#xff1a;輸入&#xff1a;農田邊界、障礙物信息、作物類型、病蟲害信息、所需噴灑量、天氣條件。運行&#xff1a;利用地面站軟件或移動APP&#xff0c;規劃最優飛行路徑&#xff0c;設定飛行高度、速度、噴灑參數、作業區域。將規…

mongodb源代碼分析createCollection命令創建Collection流程分析

MongoDB 提供兩種方式創建集合&#xff1a;隱式創建 和 顯式創建。方式 1&#xff1a;隱式創建&#xff08;推薦&#xff09;當你向不存在的集合中插入文檔時&#xff0c;MongoDB 會自動創建該集合。示例在 db中隱式創建 users 集合&#xff1a;javascriptdb.users.insertOne({…

c++注意點(13)----設計模式(抽象工廠)

創建型模式抽象工廠模式&#xff08;Abstract Factory Pattern&#xff09;是一種創建型設計模式&#xff0c;它提供一個接口&#xff0c;用于創建一系列相關或相互依賴的對象&#xff0c;而無需指定它們具體的類。簡單說&#xff0c;它就像一個 "超級工廠"&#xff…

【大語言模型入門】—— Transformer 如何工作:Transformer 架構的詳細探索

Transformer 如何工作&#xff1a;Transformer 架構的詳細探索Transformer 如何工作&#xff1a;Transformer 架構的詳細探索什么是 Transformer&#xff1f;什么是 Transformer 模型&#xff1f;歷史背景從 RNN 模型&#xff08;如 LSTM&#xff09;到 Transformer 模型在 NLP…

iOS安全和逆向系列教程 第20篇:Objective-C運行時機制深度解析與Hook技術

iOS安全和逆向系列教程 第20篇:Objective-C運行時機制深度解析與Hook技術 引言 在上一篇文章中,我們深入學習了ARM64匯編語言的基礎知識,掌握了從寄存器操作到指令分析的完整技能體系。現在,我們將把這些底層知識與iOS應用的高層邏輯聯系起來,深入探討Objective-C運行時…

IDEA中全局搜索快捷鍵Ctrl+Shift+F為何失靈?探尋原因與修復指南

在軟件開發中&#xff0c;高效地查找和管理代碼是提升生產力的關鍵。IntelliJ IDEA&#xff0c;作為一款功能強大的集成開發環境&#xff08;IDE&#xff09;&#xff0c;提供了豐富的搜索功能&#xff0c;幫助開發者迅速定位代碼、資源、甚至是IDE功能本身。 在 IntelliJ IDE…

【學習筆記】Lean4 定理證明 ing

文章目錄概述Lean4 定理證明初探示例&#xff1a;證明 1 1 2示例&#xff1a;證明 2 * (x y) 2 * x 2 * yLean4 定理證明基礎命題與定理命題&#xff08;Proposition&#xff09;定理&#xff08;Theorem&#xff09;量詞策略概述 Lean證明是指在Lean環境中&#xff0c;通…

墨者:SQL注入漏洞測試(HTTP頭注入)

墨者學院&#xff1a;SQL注入漏洞測試(HTTP頭注入)&#x1f680; 1. 什么是HTTP頭注入&#xff1f;&#x1f50d; HTTP頭注入是指攻擊者通過篡改HTTP請求頭部的字段&#xff08;如User-Agent、Referer、Cookie、Host等&#xff09;&#xff0c;將惡意SQL代碼插入到后端數據庫查…

linux_前臺,后臺進程

*在用戶訪問端口時&#xff0c;操作系統會形成對應的session,在其的內部進一步形成bash等進程 *一個會話只有一個前臺進程&#xff0c;可以有多個后臺進程&#xff0c;前臺與后臺進程的區別在于誰擁有鍵盤的使用權*前臺與后臺進程都可以訪問顯示器但是后臺無法訪問標準輸入獲取…