標籤:src 不同 bsp png 內容 棧記憶體 ble 形參 為什麼
實值型別和參考型別的不同
【定義】
參考型別 表示你操作的資料是同一個,也就是說當你傳一個參數給另一個方法時,你在另一個方法中改變這個變數的值,那麼調用這個方法時,傳入的變數的值也將改變。
實值型別 表示複製一個當前變數傳給方法,當你在這個方法中改變這個變數的值時,最初聲明的變數的值不會變。
【實值型別】
實值型別就是基礎資料型別 (Elementary Data Type) 基礎資料型別 (Elementary Data Type)常被稱為四類 八種
- 整型:byte、short、int、long
- 浮點型:float、double
- 字元型:char
- 邏輯型:boolean
【參考型別】
除了四類、八種基本類型外,所有的類型都稱為參考型別(數組,類,介面,字串)
[值傳遞]
基礎資料型別 (Elementary Data Type)賦值都屬於值傳遞,值傳遞傳遞的是實實在在的變數值,是傳遞原參數的拷貝,值傳遞後,實參傳遞給形參的值,形參發生改變而不影響實參。
在弄清楚實值型別與參考型別之後,最後一點就是值傳遞與引用傳遞
【引用傳遞】
參考型別之間賦值屬於引用傳遞。引用傳遞傳遞的是對象的引用地址,也就是它的本身
引用傳遞:傳的是地址,就是將實參的地址傳遞給形參,形參改變了,實參當然被改變了,因為他們指向相同的地址。
引用和我們的指標差不多,但是它不又不需要我們去具體的操作
【記憶體配置】
一個具有實值型別(value type)的資料存放在棧內的一個變數中。即是在棧中分配記憶體空間,直接儲存所包含的值,其值就代表資料本身。
實值型別的資料具有較快的存取速度。
一個具有參考型別(reference type)的資料並不駐留在棧中,而是儲存於堆中。即是在堆中分配記憶體空間,不直接儲存所包含的值,而是指向所要儲存的值,其值代表的是所指向的地址。當訪問一個具有參考型別的資料時,需要到棧中檢查變數的內容,
該變數引用堆中的一個實際資料。參考型別的資料比實值型別的資料具有更大的儲存規模和較低的訪問速度。
Java中有記憶體回收機制,棧記憶體中的變數隨著方法的結束記憶體自然銷毀了,而用參考型別的時候,當方法結束的時候,這個對象可能被另一個參考型別所應用,不會銷毀,只有當一個對象沒有任何引用變數引用的時候,記憶體回收機制才會回收
2,為什麼Java中資料的存放有堆和棧之分?
java中的參考型別和實值型別