程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺談java常量池

淺談java常量池

編輯:關於JAVA

淺談java常量池。本站提示廣大學習愛好者:(淺談java常量池)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談java常量池正文


java常量池技巧

java中常量池技巧說的淺顯點就是java級其余緩存技巧,便利快捷的創立一個對象。當須要一個對象時,從池中去獲得(假如池中沒有,就創立一個並放入池中),當下次須要雷同變量的時刻,不消從新創立,從而節儉空間。

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

java中的根本類型的包裝類、個中Byte、Boolean、Short、Character、Integer、Long完成了常量池技巧,(除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);

履行成果:

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)];

   // 關於不在這個規模的就從新創立一個Integer對象   
   return new Integer(i);
}

關於-128~127的Integer對象才會到IntegerCache裡獲得緩存,應用常量池技巧。

private static class IntegerCache {  ...  static final Integer cache[];
// IntegerCache類的cache是用final潤飾的,是個靜態數組,起到緩存的感化}

String類的常量池

String類型的常量池比擬特別,String類常量池在jdk7中放在了java heap中。應用辦法包含:

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

•應用String.intern();

以上這篇淺談java常量池就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved