值型別和引用型別的區別是什麼
值型別和引用型別經常出現在JAVA等程式語言的書籍中,一些學習java的新手不是很懂這兩者的區別,下面小編為大家介紹值型別和引用型別的區別,感興趣的朋友們一起來看看吧!
值型別和引用型別的區別一、定義
值型別表示複製一個當前變數傳給方法,當你在這個方法中改變這個變數的值時,最初生命的變數的值不會變。
引用型別表示你操作的資料是同一個,也就是說當你傳一個引數給另一個方法時,你在另一個方法中改變這個變數的值,那麼呼叫這個方法是傳入的變數的值也將改變。
通俗說法: 值型別就是現金,要用直接用;引用型別是存摺,要用還得先去銀行取現。----***摘自網上***
值型別和引用型別的區別二、基本資料型別
值型別有四類八種
四類: 1,整型 2,浮點型 3,字元型 4,邏輯型
八種: 1,整型3種 byte,short,int,long
2,浮點型2種 float,double
3,字元型1種 char
4,邏輯型1種 boolean
引用型別除了四類八種基本型別外,所有的型別都稱為引用型別。
值型別和引用型別的區別三、值傳遞和引用傳遞
值傳遞
基本資料型別賦值都屬於值傳遞,值傳遞傳遞的是實實在在的變數值,是傳遞原引數的拷貝,值傳遞後,實參傳遞給形參的值,形參發生改變而不影響實參。
引用傳遞
引用型別之間賦值屬於引用傳遞。引用傳遞傳遞的是物件的引用地址,也就是它的本身***自己最通俗的理解***。引用傳遞:傳的是地址,就是將實參的地址傳遞給形參,形參改變了,實參當然被改變了,因為他們指向相同的地址。
引用和我們的指標差不多,但是它不又不需要我們去具體的操作。
值型別和引用型別的區別四、記憶體分配
一個具有值型別***value type***的資料存放在棧內的一個變數中。即是在棧中分配記憶體空間,直接儲存所包含的值,其值就代表資料本身。值型別的資料具有較快的存取速度。
一個具有引用型別***reference type***的資料並不駐留在棧中,而是儲存於堆中。即是在堆中分配記憶體空間,不直接儲存所包含的值,而是指向所要儲存的值,其值代表的是所指向的地址。當訪問一個具有引用型別的資料時,需要到棧中檢查變數的內容,該變數引用堆中的一個實際資料。引用型別的資料比值型別的資料具有更大的儲存規模和較低的訪問速度。
值型別和引用型別的區別五、裝箱與拆箱
其實裝箱就是值型別到引用型別的轉化過程。將一個值型別變數裝箱成一個引用型別變數,首先會在託管堆上為新的引用型別變數分配記憶體空間,然後將值型別變數拷貝到託管堆上新分配的物件記憶體中,最後返回新分配的物件記憶體地址。裝箱操作是可逆的,所以還有拆箱操作。拆箱操作獲取只想物件中包含值型別部分的指標,然後由程式設計師手動將其對應的值拷貝給值型別變數。
- 值型別和引用型別的區別是什麼
- 有關機智勇敢自信自強的名言
- 霸氣掙錢的經典句子_霸氣掙錢的最新句子
- 申請獎學金專案緩解出國留學經濟壓力大問題
- 以家為主題的演講稿範文
- 初中感恩老師週記
- 幹海帶怎麼洗
- 高考生物的答題技巧的介紹
- 雞蛋紅殼的還是白殼的好
- 新人上班自我介紹範文
- 吃螃蟹過敏怎麼辦
- 如何用啤酒洗臉
- 法國吊蘭的養殖方法_法國吊蘭要怎麼養
- 初中生表揚信範文
- 大氣豁達勵志簡短的話
- 筆記本電池不充電怎麼啟用
- 大姨媽來了吃什麼好_調經食譜推薦
- 時尚勵志語錄最新帶圖
- 小學數學老師面試自我介紹
- 學習傳統文化行動倡議書範文
- 康熙字典五行屬金的字
- 康熙字典五行屬木的字
- 康熙字典五行屬水的字
- 康熙字典五行屬火的字
- 康熙字典五行屬土的字