一.Java中什麼叫作引用類型變量?
引用:就是按內存地址查詢
好比:String s = new String();這個實際上是在棧內存裏分配一塊內存空間爲s,在堆內存裏
new了一個String類型的空間,在運行時是 棧內存裏的 s 指向堆內存裏的那一塊存儲空間
基本數據類類型存的是數值自己,而引用類型變量在內存放的是數據的引用,並非數據的自己,
引用類型變量是以間接方式去獲取數據。
引用類型變量都屬於對象類型,如:數組、類、字符串等都屬於引用類型變量。因此,引用類型
變量裏面存放的是數據的地址。
說白了基本數據類型變量就像是直接放在櫃子裏的東西,而引用數據類型變量就是這個櫃子對應編碼
的鑰匙。鑰匙號和櫃子對應。
二.java中引用類型的變量和對象的區別?
對象:是按照「類」這個模板創建的,創建的位置則是內存
例如A是一個類。A X則是建立一個引用變量,X=NEW A()則是在內存中創建一個對象(開闢了1片空間)
,對象的模板就是A(能夠理解爲在空間裏複製了A類裏的變量到空間裏去)。此時就可使用引用變量X
去引用對象中的變量了
三.值類型和引用類型的區別?
[定義]
引用類型表示你操做的數據是同一個,也就是說當你傳一個參數給另外一個方法時,你在另外一個方法中改變
這個變量的值,那麼調用這個方法是傳入的變量的值也將改變.值類型表示複製一個當前變量傳給方法,
[值類型]
也就是基本數據類型 基本數據類型常被稱爲四類八種
四類:
1,整型 2,浮點型 3,字符型4,邏輯型
八種:
1,整型3種 byte,short,int,long
2,浮點型2種 float,double
3,字符型1種 char
4,邏輯型1種 boolean
[引用類型]
除了四類八種基本類型外,全部的類型都稱爲引用類型(數組,類,接口,字符串)
[值傳遞]
基本數據類型賦值都屬於值傳遞,值傳遞傳遞的是實實在在的變量值,是傳遞原參數的拷貝,值傳遞後,實參
傳遞給形參的值,形參發生改變而不影響實參。
[引用傳遞]
引用類型之間賦值屬於引用傳遞。引用傳遞傳遞的是對象的引用地址,也就是它的自己(本身最通俗的理解)。
引用傳遞:傳的是地址,就是將實參的地址傳遞給形參,形參改變了,實參固然被改變了,由於他們指向相同的地址。
引用和咱們的指針差很少,可是它不又不須要咱們去具體的操做
[內存分配]
一個具備值類型(value type)的數據存放在棧內的一個變量中。便是在棧中分配內存空間,直接存儲所包
含的值,其值就表明數據自己。
值類型的數據具備較快的存取速度。
一個具備引用類型(reference type)的數據並不駐留在棧中,而是存儲於堆中。便是在堆中分配內存空間,
不直接存儲所包含的值,而是指向所要存儲的值,其值表明的是所指向的地址。當訪問一個具備引用類型的
數據時,須要到棧中檢查變量的內容,該變量引用堆中的一個實際數據。引用類型的數據比值類型的數據具
有更大的存儲規模和較低的訪問速度。
Java中有垃圾回收機制,棧內存中的變量隨着方法的結束內存天然銷燬了,而用引用類型的時候,當方法結,
束的時候,這個對象可能被另外一個引用類型所應用,不會銷燬,只有當一個對象
java