目錄
- 一、方法的多載(overload)
- 一、什么是方法的多載
- 二、方法執行時的記憶體變化
- 一、JVM主要三塊記憶體空間
- 二、關于堆疊的資料結構(如圖)
- 三、方法執行程序記憶體變化(用以下代碼演示)
- 三、方法的遞回
- 一、遞回的使用及其記憶體圖
- 二、遞回的注意事項
一、方法的多載(overload)
一、什么是方法的多載
- 在同一個類中
- 方法名相同
- 引數串列不同
- 引數個數不同算不同
- 引數型別不同算不同
- 引數順序不同算不同
?只要同時滿足上面三個條件,那么我們就可以認定方法之間發生了多載機制,注:
??方法多載和方法的回傳值型別無關
??方法多載和方法的修飾符串列無關
二、方法執行時的記憶體變化
一、JVM主要三塊記憶體空間
- 方法區:最先有資料,存放代碼片段,存放class位元組碼檔案;
- 堆記憶體:這里先賣個關子,后面博客會補上的;
- 堆疊記憶體:方法呼叫的時候,該方法需要的記憶體空間在堆疊中分配,方法不呼叫時是不會在堆疊中分配空間的;
?注:這只是主要三塊記憶體空間,除了這三塊還有其他的,
二、關于堆疊的資料結構(如圖)
?由于方法呼叫時所需要的記憶體空間在堆疊中分配,因此這里需要簡單的了解一下堆疊的資料結構;
?資料結構是存盤資料的容器,而該容器在存盤資料時存在著不同的結構,堆疊就是其中一種結構:
- 堆疊存盤資料的特點:先進后出,后進先出;
- 堆疊存盤的是方法運行程序中需要的記憶體,以及堆疊中會存盤方法的區域變數;
- 方法只有在呼叫的時候才會在堆疊中分配記憶體,此時成為:壓堆疊;
- 方法在執行結束之后,該方法所需要的空間就會釋放,此時稱為:彈堆疊;

三、方法執行程序記憶體變化(用以下代碼演示)
- 代碼圖

2. 運行結果

3. 記憶體變化圖

三、方法的遞回
一、遞回的使用及其記憶體圖
- 代碼圖

2. 記憶體變化圖(這里只畫出堆疊記憶體)

二、遞回的注意事項
- 當遞回時候程式沒有結束條件,一定會發生:堆疊記憶體溢位錯誤:Stack OverflowError,因此,遞回必須要有結束條件;
- 遞回假設是有結束條件時,假設這個結束條件是對的,是合法的,遞回有的時候也會出現堆疊記憶體溢位錯誤,因為有可能遞回的太深,堆疊記憶體不夠了,因為一直在壓堆疊;
- 在實際中,不建議輕易的選擇遞回,能用for回圈while回圈代替的,盡量使用回圈來做,因為回圈的效率高,耗費的記憶體少,遞回耗費的記憶體比較大,另外遞回的使用不當,會導致JVM死掉;
相關鏈接:
鏈接: 007-Java中方法的使用(基礎篇).
鏈接: 006-Java的訪問權限控制符和包匯入機制.
鏈接: 005-Java中的控制陳述句.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/279778.html
標籤:其他
上一篇:不同型別變數之間的計算
