通過如下**輸出可以看出常量池數值範圍為-128~127。
integer i1 = -129;
integer i2 = -129;
system.out.println("i1=i2\t" + (i1 == i2));
i1 = -128;
i2 = -128;
system.out.println("i1=i2\t" + (i1 == i2));
i1 = 127;
i2 = 127;
system.out.println("i1=i2\t" + (i1 == i2));
i1 = 128;
i2 = 128;
system.out.println("i1=i2\t" + (i1 == i2));
輸出結果:
i1=i2 false
i1=i2 true
i1=i2 true
i1=i2 false
通過如下**輸出可以看出常量池數值範圍為0~127。
character i1 = (char)-1;
character i2 = (char)-1;
system.out.println("i1=i2\t" + (i1 == i2));
i1 = (char)0;
i2 = (char)0;
system.out.println("i1=i2\t" + (i1 == i2));
i1 = (char)127;
i2 = (char)127;
system.out.println("i1=i2\t" + (i1 == i2));
i1 = (char)128;
i2 = (char)128;
system.out.println("i1=i2\t" + (i1 == i2));
輸出結果:
i1=i2 false
i1=i2 true
i1=i2 true
i1=i2 false
通過如下**輸出可以看出它也具有常量池。
boolean i1 = true;
boolean i2 = true;
system.out.println("i1=i2\t" + (i1 == i2));
輸出結果:
i1=i2 true
float和double無常量池。
float i1 = 127f;
float i2 = 127f;
system.out.println("i1=i2\t" + (i1 == i2));
double i3 = 127d;
double i4 = 127d;
system.out.println("i3=i4\t" + (i3 == i4));
輸出結果:
i1=i2 false
i3=i4 false
引用文章:
簡單總結:可以通過使用雙引號宣告出來的string物件的方式和string.intern的方式在字串常量池中生成物件。若字串常量池中物件已存在,則無需重複生成物件。同時注意1.6和1.7的重要區別。
JAVA基本型別與包裝類
1.宣告方式不同,基本型別不適用new關鍵字,而包裝型別需要使用new關鍵字來在堆中分配儲存空間 2.儲存方式及位置不同,基本型別 區域性變數在棧中,成員變數實在堆中,靜態變數在data區中 是直接將變數值儲存在棧中,而包裝型別是將物件放在堆中,然後通過引用來使用 3.初始值不同,基本型別的初始值如...
基本型別包裝類
一 概述 1 將基本資料型別封裝成物件的好處在於可以在物件中定義更多的功能方法操作該資料。2 常用的操作之一 用於基本資料型別與字串之間的轉換。3 基本型別和包裝類的對應 byte,short,integer,long,float,double character,boolean 二 integer...
基本型別包裝類
基本資料型別的包裝類可以使用基本型別對應的類的相關成員變數和成員方法,相比於基本資料型別,包裝類更易於使用。八大基本資料型別 byte short int long float double char boolean 對應的包裝類 byte short integer long float doub...