JAVA中值類型和引用類型的區(qū)別
1、 Java中值類型和引用類型的不同?
[定義]
引用類型表示你操作的數(shù)據(jù)是同一個(gè),也就是說(shuō)當(dāng)你傳一個(gè)參數(shù)給另一個(gè)方法時(shí),你在另一個(gè)方法中改變這個(gè)變量的值,
那么調(diào)用這個(gè)方法是傳入的變量的值也將改變.值類型表示復(fù)制一個(gè)當(dāng)前變量傳給方法,
當(dāng)你在這個(gè)方法中改變這個(gè)變量的值時(shí),最初生命的變量的值不會(huì)變.通俗說(shuō)法: 值類型就是現(xiàn)金,要用直接用;引用類型是存折,要用還得先去銀行取現(xiàn)。----(摘自網(wǎng)上)
[值類型]
也就是基本數(shù)據(jù)類型 基本數(shù)據(jù)類型常被稱為四類八種
四類:
1,整型 2,浮點(diǎn)型 3,字符型4,邏輯型
八種:
1,整型3種 byte,short,int,long
2,浮點(diǎn)型2種 float,double
3,字符型1種 char
4,邏輯型1種 boolean
[引用類型]
除了四類八種基本類型外,所有的類型都稱為引用類型(數(shù)組,類,接口,字符串)
在弄清楚值類型與引用類型之后,最后一點(diǎn)就是值傳遞與引用傳遞,這才是關(guān)鍵
[值傳遞]
基本數(shù)據(jù)類型賦值都屬于值傳遞,值傳遞傳遞的是實(shí)實(shí)在在的變量值,是傳遞原參數(shù)的拷貝,值傳遞后,實(shí)參傳遞給形參的值,形參發(fā)生改變而不影響實(shí)參。
[引用傳遞]
引用類型之間賦值屬于引用傳遞。引用傳遞傳遞的是對(duì)象的引用地址,也就是它的本身(自己最通俗的理解)。
引用傳遞:傳的是地址,就是將實(shí)參的地址傳遞給形參,形參改變了,實(shí)參當(dāng)然被改變了,因?yàn)樗麄冎赶蛳嗤牡刂贰?/p>
引用和我們的指針差不多,但是它不又不需要我們?nèi)ゾ唧w的操作
[內(nèi)存分配]
一個(gè)具有值類型(value type)的數(shù)據(jù)存放在棧內(nèi)的一個(gè)變量中。即是在棧中分配內(nèi)存空間,直接存儲(chǔ)所包含的值,其值就代表數(shù)據(jù)本身。
值類型的數(shù)據(jù)具有較快的存取速度。
一個(gè)具有引用類型(reference type)的數(shù)據(jù)并不駐留在棧中,而是存儲(chǔ)于堆中。即是在堆中分配內(nèi)存空間,不直接存儲(chǔ)所包含的值,而是指向所要存儲(chǔ)的值,其值代表的是所指向的地址。當(dāng)訪問(wèn)一個(gè)具有引用類型的數(shù)據(jù)時(shí),需要到棧中檢查變量的內(nèi)容,該變量引用堆中的一個(gè)實(shí)際數(shù)據(jù)。引用類型的數(shù)據(jù)比值類型的數(shù)據(jù)具有更大的存儲(chǔ)規(guī)模和較低的訪問(wèn)速度。
Java中有垃圾回收機(jī)制,棧內(nèi)存中的變量隨著方法的結(jié)束內(nèi)存自然銷毀了,而用引用類型的時(shí)候,當(dāng)方法結(jié)束的時(shí)候,這個(gè)對(duì)象可能被另一個(gè)引用類型所應(yīng)用,不會(huì)銷毀,只有當(dāng)一個(gè)對(duì)象沒(méi)有任何引用變量引用的時(shí)候,垃圾回收機(jī)制才會(huì)回收
2,為什么Java中數(shù)據(jù)的存放有堆和棧之分?
以上所述是小編給大家介紹的JAVA中值類型和引用類型的區(qū)別,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
深入淺出講解Spring框架中AOP及動(dòng)態(tài)代理的應(yīng)用
在軟件業(yè),AOP為Aspect?Oriented?Programming的縮寫,意為:面向切面編程,通過(guò)預(yù)編譯方式和運(yùn)行期間動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)2022-03-03SpringBoot啟動(dòng)指定profile的多種方式
這篇文章主要介紹了SpringBoot啟動(dòng)指定profile的多種方式,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09SpringBoot整合Redis實(shí)現(xiàn)登錄失敗鎖定功能(實(shí)例詳解)
本文我們已經(jīng)探討如何利用Redis來(lái)實(shí)現(xiàn)鎖定賬戶的安全措施,以及通過(guò)SpringBoot整合Redis實(shí)現(xiàn)了這一功能,感興趣的朋友跟隨小編一起學(xué)習(xí)下吧2024-02-02Springboot集成Actuator監(jiān)控功能詳解
這篇文章主要介紹了Springboot集成Actuator監(jiān)控功能詳解,有時(shí)候我們想要實(shí)時(shí)監(jiān)控我們的應(yīng)用程序的運(yùn)行狀態(tài),比如實(shí)時(shí)顯示一些指標(biāo)數(shù)據(jù),觀察每時(shí)每刻訪問(wèn)的流量,或者是我們數(shù)據(jù)庫(kù)的訪問(wèn)狀態(tài)等等,這時(shí)候就需要Actuator了,需要的朋友可以參考下2023-09-09SpringBoot jar包大小優(yōu)化問(wèn)題及解決
這篇文章主要介紹了SpringBoot jar包大小優(yōu)化問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11