java中的方法
方法是什麼?
方法是可以完成某個特定的功能的並且可以被重複利用的程式碼片段,方法的出現,讓程式碼有了很強大複用性
方法定義:
[修飾符列表] 返回值型別 方法名(形式引數列表){
方法體;
}
形式引數列表:
簡稱:形參
形式引數列表中的每一個引數都是"區域性變數",方法結束後記憶體釋放,形參的個數有(0-n)個,形參有多 個的話,使用","隔開,是英文的逗號, 形參的資料型別起決定性作用,形參的變數名隨意
方法體:
由java語句構成,方法體中編寫的程式碼是業務邏輯程式碼,完成某個特定的功能,在方法體中處理業務邏輯 程式碼需要的資料,資料來源就是這些形參
註解:在寫方法時引數是形參,而在呼叫有引數的方法時,這個引數列表為實參(實際引數列表),形參和實參必須一一對應,型別對應,個數對應。
返回值型別:
- 返回值一般指的是一個方法結束之後的結果,方法就是為了完成某個特定的功能,方法結束後,大部分都有一個結果,而體現結果的一般都是資料,資料得有型別,這就是返回值型別
- 返回值型別可以是任何型別(基本資料型別/引用資料型別)
- 返回值型別不能不寫,當一個方法執行結束不返回任何值時,必須寫void關鍵字
- 返回值型別不是void,那麼在方法執行結束的時候必須使用"return 值"這樣的語句來完成"值"的返回,不然會編譯報錯
- 如果返回值型別是void,那麼在方法體當中不能有"return 值",這樣的語句,但是可以有"return;",這樣的語句。
註解:"return;"作用終止當前方法,只要有"return ;"關鍵字的語句執行,當前方法必然結束,但是不是整個程式結束,而寫上System.exit(0);語句, 執行時則終止程式的執行,強行退出JVM
注意:方法定義的先後順序沒有關係,方法定義在類體中,但是在java語言中所有的方法體中的程式碼都必須遵循自上而下的順序依次逐行執行。
方法呼叫的時候,該方法需要記憶體空間,在棧中分配,而且方法只有在呼叫的時候才會在棧中分配空間,並且呼叫時就是壓棧,分配空間,方法執行結束後,該方法需要的空間就會釋放,此時發生彈棧動作
方法呼叫時引數的傳遞問題:
引數傳遞的時候,和型別無關,不管是基本資料型別還是引用資料型別,統一都是將變數(盒子)中儲存的那個值複製一份,傳遞下去,但是這個值可能是一個數字100,也可能是物件的記憶體地址(記憶體地址也是一個值),就一句話:不管是哪一種資料型別的傳遞,都是將變數中儲存的那個值複製一份傳遞過去。
註解:棧中儲存方法執行需要的記憶體,以及棧中儲存方法的區域性變數
區域性變數有一個特點:方法結束之後,區域性變數佔用的記憶體會自動釋放
注意:程式開始執行的時候是先執行main方法。因為main方法是程式入口,main方法不需要程式設計師手動呼叫,是由JVM呼叫的,但是除了main方法其他方法都需要程式設計師手動呼叫才能被執行。在使用方法時,自定義的方法可以呼叫main方法,但是沒有意義,容易出現無限呼叫,一個方法不能再另外一個方法裡宣告(方法與方法之間關係是平級關係)
方法過載(overload)
什麼情況下考慮使用方法過載機制?
當多個方法功能相似的時候,建議將方法名定義為一致的,這樣程式碼美觀,又方便程式設計(容易記憶,方便使用)
注意:方法過載不能隨便使用,如果功能不相似,就不要使用
滿足什麼條件的時候構成了方法過載?
- 在同一個類中
- 方法名相同
- 形式引數列表不同(引數個數不同,引數資料型別不同,引數順序不同)
方法過載優點:程式碼美觀、方便程式碼的編寫
方法遞迴
什麼是方法遞迴?
方法自身呼叫自身。
注意:使用遞迴的時候,必須新增結束條件,沒有結束條件,會發生棧記憶體溢位錯誤。但是當遞迴有結束條件,並且結束條件合法的時候,也可能會發生棧記憶體溢位錯誤。原因:遞迴太深,棧記憶體不夠了
棧記憶體溢位錯誤:StackOverflowError,原因:棧記憶體不夠
方法遞迴簡單例子:
1 public class Test { 2 public static void main(String[] args) { 3 int add = add(10); 4 System.out.println(add); 5 } 6 public static int add(int n) { 7 if (n ==1) { 8 return 1; 9 } 10 return n +add(n - 1); 11 } 12 }
相關推薦
Java 中方法區與常量池
前言正文全域性字串池(string pool也有叫做string literal pool)class 檔案常量池(class constant pool)執行時常量池(runtime constant pool)三種常量池之間的關聯總結參考連結
Java中方法的重寫
* 方法的重寫(override / overwrite)* * 1.重寫:子類繼承父類以後,可以對父類中同名同參數的方法,進行覆蓋操作* * 2.應用:重寫以後,當建立子類物件以後,通過子類物件呼叫子父類中的同名同參數的方法時,實際執
JAVA中方法和變數在繼承中的覆蓋和隱藏
我們知道,在JAVA中,子類可以繼承父類,如果子類宣告的方法與父類有重名的情況怎麼辦,大夥兒都知道要是重寫,但是實際上這又分為兩種情況,就是方法和變數在繼承時的覆蓋和隱藏問題,這些概念性的東西看似無聊,但
Java中方法使用的深入講解
方法的使用 1.方法的基本用法 什麼是方法,方法就是一個程式碼片段,類似於C/C++ 語言中的\"函式\"。
詳解Java中方法next()和nextLine()的區別與易錯點
1、基本語法 1.1基本使用方法 本篇部落格重點nextLine()會讀取換行(\'\\r\'),但是不會進行輸出。
java中方法的執行順序
java中方法的執行順序: 先載入父類的靜態程式碼塊和靜態變數(誰在前先載入誰)
java中方法遞迴的簡單示例
一、遞迴的思路 一個方法在執行時,呼叫自身被稱為“遞迴”。 遞迴相當於數學歸納法,有一個起始條件,有一個遞推公式。
Java中方法的過載詳解(含系統配套視訊)
一、方法的概念 在之前我們學習了方法的定義,方法實現指定功能的程式碼塊的組合,基本的定義
Java中方法的重寫(ovverride)和過載(overloading)
技術標籤:Java酬勤筆記javajdk類多型面向物件程式設計 Java中方法的重寫 重寫:
Java中方法的覆寫
一、方法的重寫概念 之前說了子類如果繼承了一個父類,那麼子類就會擁有父類的方法(不包括構.造方法)和屬性,此時如果在子類中定義了一個和父類一樣的方法,這種現象叫做子類覆寫(重寫)了父類的方法。
Java中方法的定義與使用
技術標籤:Java基礎java演算法 Java中方法的定義與使用 方法的定義 修飾符(public static)返回值型別 方法名稱(引數型別 引數名稱,……){ 方法體 return 返回值; }方法的過載 定義:方法名相同,引數的個數
java中方法的細分(普通方法,靜態方法,構造方法)
技術標籤:javase基礎java 1.1普通方法 方法通俗點來講用於描述一個物件的行為.例如一個人可以有很多行為,吃飯睡覺打豆豆,而這些行為是由方法來實現的。
JAVA中方法引用
技術標籤:java **資本的情懷不如錢實在!見人說人話,見鬼說鬼話!** 一、什麼是方法引用? 方法引用是Lambda表示式的一種簡寫形式。 如果Lambda表示式方法體中只是呼叫一個特定的已經存在的方法,則可以使用方
Java中方法的過載與覆蓋
技術標籤:javajava 文章目錄 過載覆蓋過載與覆蓋的對比final修飾符 過載 方法的過載就是在同一個類中定義了多個同名的方法,但有著不同的形參(即形參的個數不同或形參的型別不同)
Java中方法引數和多引數方法
今天進行了方法引數和多引數方法的學習,覺得和C語言函式中形參和實參類似,記錄一下
JAVA中方法的呼叫(詳細整理)
JAVA中方法的呼叫主要有以下幾種:1.非靜態方法非靜態方法就是沒有 static 修飾的方法,對於非靜態方法的呼叫,是通過對 象來呼叫的,表現形式如下。
Day_3_29:JAVA中方法引數的傳遞:實參和引用(地址)
JVM記憶體分為:棧(stack),堆(heap),方法區(method)。 一,棧:存放基礎資料型別,物件的引用(物件的地址)
Java中構造器內部的多型方法的行為例項分析
本文例項講述了Java中構造器內部的多型方法的行為操作。分享給大家供大家參考,具體如下:
java中物件呼叫成員變數與成員例項方法
使用物件訪問類中的成員: 物件名.成員變數; 物件名.成員方法(); 成員變數的預設值:
java中獲取類資源的方法總結
介紹兩種獲取資源的方式: 一、通過ClassLoader獲取: loader.getResourceAsStream(\"a/b/temp.txt\");--獲取src下/a/b包下的temp.txt資源