Java整數緩衝區
=========================================================================================================================================================
Integer 資料自動裝箱拆箱遇到的個問題
問題:
請看下面 圖中
age3
age4
age5
age6
實現自動裝箱,但兩個地址比較後,一個輸出true,一個輸出false
-----------------------------------------------------------------------------------------
解答:
自動裝箱其實java底層為我們做了一些事:針對本題在你使用自動裝箱時,java底層為我們隱型呼叫了Intege.valueOf(100)如下圖:
-----------------------------------------------------------------------------------------
接下來我們去看看Integer.valueof(100)函式內部是怎樣的:
這裡看到形參i>=IntegerCache.low&&i<=IntegerCache.high那我們接著去看看IntegerCache函式
-----------------------------------------------------------------------------------------
IntegerCache函式:
我們可以看到在靜態程式碼塊中low為-128,h=127,cache[]陣列的長度為h-low+1 也就是256,下面對cache[]陣列進行從-128~127進行迴圈初始化
**總結:**因此我們自動裝箱資料的範圍在[-128,127],獲得的地址都是對應cache[]陣列元素確定的地址,超過這個資料範圍,地址就會在堆記憶體中隨機分配,因此才會出現相同int資料自動裝箱,有的地址相同,有的地址不同。
相關文章
- 調節Oracle資料緩衝區引數,緩衝整個資料庫(轉)Oracle資料庫
- Java NIO:緩衝區Java
- Java NIO 之緩衝區Java
- Java NIO 之 Buffer(緩衝區)Java
- Java NIO2:緩衝區Java
- Oracle調整緩衝區快取記憶體Oracle快取記憶體
- Java-NIO之Buffer(緩衝區)Java
- 緩衝區分析
- Java NIO 緩衝區學習筆記Java筆記
- C 標準庫IO緩衝區和核心緩衝區的區別
- getchar緩衝區
- Java NIO -- 緩衝區(Buffer)的資料存取Java
- Oracle效能最佳化調整--調整緩衝區快取記憶體Oracle快取記憶體
- Java™ 教程(緩衝流)Java
- Unity深度緩衝區指令Unity
- nginx 緩衝區構造Nginx
- IO流上:概述、字元流、緩衝區(java基礎)字元Java
- 調整緩衝區快取記憶體(Buffer Cache)的效能(轉)快取記憶體
- 調整緩衝區快取記憶體(Buffer Cache)的效能(1)快取記憶體
- 調整緩衝區快取記憶體(Buffer Cache)的效能(2)快取記憶體
- 調整緩衝區快取記憶體(Buffer Cache)的效能(3)快取記憶體
- 【NIO】Java NIO之緩衝Java
- Node.js Buffer(緩衝區)Node.js
- PHP的輸出緩衝區PHP
- JavaScript WebGL 幀緩衝區物件JavaScriptWeb物件
- Linux 命令 管道 緩衝區Linux
- log buffer(日誌緩衝區)
- 動態更新——緩衝區物件物件
- Java中縮放緩衝影像Java
- 緩衝區溢位小程式分析
- PHP 輸出緩衝區應用PHP
- Redis效能篇(五)Redis緩衝區Redis
- 8、Node.js Buffer(緩衝區)Node.js
- node.js中緩衝區–BufferNode.js
- C語言緩衝區問題C語言
- WebGIS 8-1 緩衝區分析Web
- cuug 資料緩衝區調優
- Buffer Cache Size(資料緩衝區)