淺談java常量池
java常量池技術(shù)
java中常量池技術(shù)說(shuō)的通俗點(diǎn)就是java級(jí)別的緩存技術(shù),方便快捷的創(chuàng)建一個(gè)對(duì)象。當(dāng)需要一個(gè)對(duì)象時(shí),從池中去獲取(如果池中沒(méi)有,就創(chuàng)建一個(gè)并放入池中),當(dāng)下次需要相同變量的時(shí)候,不用重新創(chuàng)建,從而節(jié)省空間。
java八種基本類型的包裝類和對(duì)象池
java中的基本類型的包裝類、其中Byte、Boolean、Short、Character、Integer、Long實(shí)現(xiàn)了常量池技術(shù),(除了Boolean,都只對(duì)小于128的值才支持)
比如,Integer對(duì)象
Integer i1 = 100; Integer i2 = 100; // 上面兩行代碼,使用自動(dòng)裝箱特性,編譯成 // Integer i1 = Integer.valueOf(100); // Integer i2 = Integer.valueOf(100); System.out.println(i1 == i2); Integer i3 = 128; Integer i4 = 128; System.out.println(i3 == i4);
執(zhí)行結(jié)果:
true false
原因我看下Integer對(duì)象的valueOf()的源碼
public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; // 對(duì)于不在這個(gè)范圍的就重新創(chuàng)建一個(gè)Integer對(duì)象 return new Integer(i); }
對(duì)于-128~127的Integer對(duì)象才會(huì)到IntegerCache里獲取緩存,使用常量池技術(shù)。
private static class IntegerCache { ... static final Integer cache[]; // IntegerCache類的cache是用final修飾的,是個(gè)靜態(tài)數(shù)組,起到緩存的作用}
String類的常量池
String類型的常量池比較特殊,String類常量池在jdk7中放在了java heap中。使用方法包括:
•直接使用字面量聲明,如String s = "abc";
•使用String.intern();
以上這篇淺談java常量池就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot調(diào)用支付寶第三方接口(沙箱環(huán)境)
這篇文章主要介紹了springboot+調(diào)用支付寶第三方接口(沙箱環(huán)境),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Eclipse設(shè)定文件的默認(rèn)打開(kāi)方式的具體操作步驟
以下是對(duì)Eclipse設(shè)定文件的默認(rèn)打開(kāi)方式的具體操作步驟進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08用攔截器修改返回response,對(duì)特定的返回進(jìn)行修改操作
這篇文章主要介紹了用攔截器修改返回response,對(duì)特定的返回進(jìn)行修改操作。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09Android開(kāi)發(fā)中Socket通信的基本實(shí)現(xiàn)方法講解
這篇文章主要介紹了Android開(kāi)發(fā)中Socket通信的基本實(shí)現(xiàn)方法講解,是安卓上移動(dòng)互聯(lián)網(wǎng)程序開(kāi)發(fā)的基礎(chǔ),需要的朋友可以參考下2015-12-12Mybatis-Plus使用updateById()、update()將字段更新為null
本文主要介紹了Mybatis-Plus使用updateById()、update()將字段更新為null,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Mybatis-plus支持Gbase8s分頁(yè)的實(shí)現(xiàn)示例
本文主要介紹了Mybatis-plus支持Gbase8s分頁(yè)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11詳解Java使用JMH進(jìn)行基準(zhǔn)性能測(cè)試
本文主要介紹了Java使用JMH進(jìn)行基準(zhǔn)性能測(cè)試,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11