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

淺談java常量池

 更新時間:2016年06月12日 12:47:17   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談java常量池。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

java常量池技術(shù)

java中常量池技術(shù)說的通俗點就是java級別的緩存技術(shù),方便快捷的創(chuàng)建一個對象。當需要一個對象時,從池中去獲取(如果池中沒有,就創(chuàng)建一個并放入池中),當下次需要相同變量的時候,不用重新創(chuàng)建,從而節(jié)省空間。

java八種基本類型的包裝類和對象池

java中的基本類型的包裝類、其中Byte、Boolean、Short、Character、Integer、Long實現(xiàn)了常量池技術(shù),(除了Boolean,都只對小于128的值才支持)

比如,Integer對象

Integer i1 = 100;
Integer i2 = 100;
// 上面兩行代碼,使用自動裝箱特性,編譯成
// 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對象的valueOf()的源碼

public static Integer valueOf(int i) {
   assert IntegerCache.high >= 127;
   if (i >= IntegerCache.low && i <= IntegerCache.high)
     return IntegerCache.cache[i + (-IntegerCache.low)];

   // 對于不在這個范圍的就重新創(chuàng)建一個Integer對象   
   return new Integer(i);
}

對于-128~127的Integer對象才會到IntegerCache里獲取緩存,使用常量池技術(shù)。

private static class IntegerCache {  ...  static final Integer cache[];
// IntegerCache類的cache是用final修飾的,是個靜態(tài)數(shù)組,起到緩存的作用}

String類的常量池

String類型的常量池比較特殊,String類常量池在jdk7中放在了java heap中。使用方法包括:

•直接使用字面量聲明,如String s = "abc";

•使用String.intern();

以上這篇淺談java常量池就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論