欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談java常量池

 更新時(shí)間:2016年06月12日 12:47:17   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇淺談java常量池。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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)文章

最新評(píng)論