jdk1.8下的自動裝箱cache
【現象】
在jdk 1.8.0_111下程式碼:
public static void main(String[] args) {
Integer a = 2;
Integer b = 2;
System.out.println(a==b);
Integer c = 222;
Integer d = 222;
System.out.println(c==d);
}
結果輸出為:
true
false
【思考與探究】
為何兩個2封裝後的物件指向同一個物件,而222就不是?
檢視java.lang.Integer原始碼Integer.class第780行:
高亮這一行初始化了一個長度為256的Integer型別的陣列cache,並把-128到127共256個數剛好塞進這個cache裡。因此後面遇到要自動裝箱-128到127的整數時,會直接指向cache裡的同一個陣列元素不用新建物件;反之則需要新建物件,因此物件引用不同。
沒事多讀讀java原始碼對於問題理解有極大幫助。
相關推薦
jdk1.8下的自動裝箱cache
【現象】在jdk 1.8.0_111下程式碼:public static void main(String[] args) {Integer a = 2;Integer b = 2;System.out.println(a==b);Integer c = 222;Intege
理解JDK1.5的自動裝箱拆箱
特性 ava 創建 幫我 max 循環 assert rally jdk1 JDK1.5的升級引入了裝箱和拆箱概念,簡單說就是為了簡化書寫。 JDK1.5之前,創建Integer對象是需要這麽寫的 Integer i = new Integer("3"); JDK
dubbo-admin在jdk1.8下報錯問題(已解決)
在虛擬機器上部署dubbo-admin的時候報錯: ERROR context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanCreationExce
jdk1.8下dubbo-admin啟動失敗
1、webx的依賴改為3.1.6版; <dependency> <groupId>com.alibaba.citrus</groupId> <artifactId>citrus-web
Jdk1.8下的HashMap原始碼分析
**目錄結構** 一、面試常見問題 二、基本常量屬性 三、構造方法 四、節點結構 4.1 Node類 4.2.TreeNode 五、put方法
Centos7下安裝 JDK1.8
class bce hostname etc 下載 nod tar.gz 執行 profile 最近看了一篇技術文章, 用 nginx+tomcat+redis+centos 實現 session 共享等功能,覺得很有用,就跟著文章在 Centos7 的環境下搭建了幾個
項目版本不同導致Eclipse報錯問題——關於在JDK1.7環境中,運行JDK1.8環境下編寫的項目
water 錯誤 顯示 lips 1.8 ips avi 序號 fill 本人電腦環境配置的是JDK1.7,朋友的是JDK1.8 ,我把她編的java文件導入到我電腦裏的Eclipse(LUNA版本)的時候,項目出現一個紅色嘆號,當然運行是肯定出錯了。SO我就開始了解決之旅
CentOS下安裝JDK1.8
dcb arp too sharp ima 環境變量 wget oracl tools.jar 下載官方的軟件包,參考地址:http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca
JDK1.8在LINUX下安裝步驟
末尾 style nbsp oot port tar ali -c 環境變量 JDK1.8在LINUX下安裝步驟: 在/usr/lib/目錄下新建jvm文件夾,如果已有jvm文件夾,則將之前的JDK版本刪除,即在jvm目錄下執行命令:rm –rf * 將JDK文件jdk-
Linux(centOS7.0)虛擬機環境下安裝JDK1.8
rep csdn 完成 安裝jdk 1.7 頂部 安裝包 centos7 tps 閱讀目錄 1.檢查系統是否安裝了JDK 2.準備工作 3.配置環境變量 4.驗證是否安裝成功 回到頂部 1.檢查系統是否安裝了JDK 1.打開SecureCRT終端,輸入:jav
Ubuntu16.04下安裝jdk1.8過程
ubunt 地址 ins 退出 .com 安裝jdk AD size class 筆者環境:騰訊雲服務器 Ubuntu16.04 x64 一 . 去oracle官網下載對應的jdk 下載地址:http://www.oracle.com/technetwork/java/
jmeter4+win10+jdk1.8環境下,jmeter輸入中文就卡死的問題
alt 問題解決 顯示 不兼容 info jmeter 輸入法 題解 猜想 問題描述:jmeter4+win10+jdk1.8環境下,輸入中文jmeter卡死; 解決思路: 起初以為是win10系統不兼容的問題,裝了個虛擬機,在虛擬機裏面裝了win7,然後再裝了jme
服務器Centos7.4 下jdk1.8環境配置、mysql環境搭建,mysql找回(重置)密碼看這篇就夠了
版本 jdk下載 改密 我們 完成 eight ati html wid 最近一直幫我的同學搭建自己的服務器,其中涉及到了以下知識點,經過查詢博客資料等方式,再加上多重實踐,我成功總結出了完整的配置一個簡單服務器環境的步驟: (來自 ZYXS 的CSDN 博客 ,全文地址請
linux下源碼安裝jdk1.8和tomcat8.5
ubuntu srv hotspot 源碼安裝 tar build ali bit 低版本 Java是目前可移植性較高的語言,相當火熱,tomcat運行就需要Java語言環境 0.java簡介 1)tomcat運行需要對應的Java環境,Java環境通過安裝jdk來獲得
Mac下Java開發環境設定:JDK1.8+Maven3.5.4+IDEA設定
這篇文章整理一下Mac下Java開發常用連結和設定。 java開發 JDK下載 下載內容 下載地址 JDK https://www.oracle.com/technetwork/j
Linux下安裝JDK1.8步驟
1.檢查一下系統中是否已安裝jdk [[email protected] local]# java -version 如果顯示如下,則需要解除安裝。 openjdk version "1.8.0_102" OpenJDK Runtime Environment (build 1
JDK1.8 bin目錄下的exe檔案使用方法簡介(一)
appletviewer.exe(小程式瀏覽器,可用來執行HTML檔案上的小程式): windows環境下新建一個java檔案,定義為一個彈窗事件小程式(彈窗顯示一段文字): import java.awt.*; import java.applet.*; public clas
centos下Jdk1.8的安裝及配置
安裝之前,首先要確定centos是否集成了自帶的openjdk,如果有,我們先要刪除自帶的openjdk,具體步驟如下: 1)在系統終端輸入:rpm -qa|grep java,如果有openjdk的話,會出現類似於XXXX_openjdk_XXX的資訊; 2)
JDK1.8 bin目錄下的exe檔案使用方法簡介(四)
jabswitch.exe 使用方法:Java Access Bridge Switch的簡稱,用於控制Java訪問橋的開/關。Java訪問橋是一種技術,讓Java應用程式實現Accessibility API,以供Microsoft Windows系統的輔助技術訪問。 測試方法:
JDK1.8 bin目錄下的exe檔案使用方法簡介(三)
idlj.exe的使用方法: 這些工具用於建立使用 OMG-Standard IDL 和 CORBA/IIOP 的應用程式 比較晦澀的詞語請見此篇短文:https://blog.csdn.net/hipilee/article/details/42197765 生產對映到OMG IDL介