java 常量池

来源:http://www.cnblogs.com/cregu/archive/2016/06/11/5575754.html
-Advertisement-
Play Games

java常量池技術 java中常量池技術說的通俗點就是java級別的緩存技術,方便快捷的創建一個對象。當需要一個對象時,從池中去獲取(如果池中沒有,就創建一個並放入池中),當下次需要相同變數的時候,不用重新創建,從而節省空間。 java八種基本類型的包裝類和對象池 java中的基本類型的包裝類、其中 ...


java常量池技術

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

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

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

比如,Integer對象

 1 Integer i1 = 100;
 2 Integer i2 = 100;
 3 // 上面兩行代碼,使用自動裝箱特性,編譯成
 4 // Integer i1 = Integer.valueOf(100);
 5 // Integer i2 = Integer.valueOf(100);
 7 System.out.println(i1 == i2);
 8 
 9 Integer i3 = 128;
10 Integer i4 = 128;
11 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();

 

參照:

百度百科:http://baike.baidu.com/view/8680346.htm

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 手機才有16G空間,用一段時間後,總是提示記憶體不足,各種清理軟體都沒卵用。 有一個方法立即見效: 1、進入Recovery 2、格式化 SDCard 博客園首席神棍 野生菌野菜乾批發 大舍大得 小舍小得 不捨不得 ...
  • 五月中旬 .NET Core RC2 如期發佈,我們遂決定翻譯 ASP.NET Core 文檔。我們在何鎮汐先生、悲夢先生、張仁建先生和雷歐納德先生的群中發佈了翻譯計劃招募信息,並召集到一群小伙伴。我們從六月開始翻譯文檔,目前已完成前兩章,並將按計劃以連載的方式逐篇公佈。當翻譯計劃完成後,所有文檔將... ...
  • 之前看了Sql Server中的基本數據類型,發現image這個類型還是比較特殊的。 於是乎就做了一個將圖片以二進位流形式存儲的程式http://www.cnblogs.com/JsonZhangAA/p/5568575.html,現在如果我想批量ed存儲網上一個網站的圖片,難道我要手寫n多地址嗎? ...
  • Spring.Net其實就是抽象工廠,只不過更加靈活強大,性能上並沒有明顯的區別。 它幫我們實現了控制反轉。 其有兩種依賴註入方式。 第一:屬性註入 第二:構造函數註入 首先,我們去 Spring.net下載 您要的版本。 現在,我們創建一個控制台應用程式,並命名為 Spring.Net_Demo ...
  • 記錄一下自己的個人網站的搭建過程。其實網上有很多教程了,有的講的好,很詳細,有的就很籠統了,當然還有抄別人的,我這篇就純屬記錄一下自己搭建的過程。 搭建一個個人網站要知道以下三個步驟, 做個比喻吧:功能變數名稱就是你家地址,通過這個地址,別人才可以找到你家;空間就是你家的大小,多少平米啊,網頁文件就是你家的 ...
  • 用圖文形式全面介紹以最簡單的方法在 Raspberry Pi 2 上安裝 Windows 10 IoT Core 操作系統及搭建 VS2015 IoT 開發環境。 ...
  • 最近練習C#項目:何問起收藏夾(HoverTreeSCJ),實現編輯網址時,遇到這個問題:比如打開視窗後,要自動顯示數據。解決方法:那麼可以通過窗體的構造函數傳遞參數。比如窗體類: 那麼新建窗體實例時就可以通過參數id傳遞數值,在SetUrlId 方法中讀取載入數據到界面。例如 new Form_E ...
  • 這是我登陸後設置cookie的方法,本來cookieValueName是用FormsAuthentication.FormsCookieName替代的,突然有一天發總是得到null值,(目前情況也不明,可能是多個cookie的問題[也不太像,之前好好的,突然就變了])之後,直接改名傳固定值"CQSP ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...