對常量池和方法區有乙個清晰的認識,那麼integer i = 10在 jvm 是怎麼執行的呢?
//integer 快取** :
public static integer valueof(int i)
integer i1 = 40;
integer i2 = 40;
system.out.println(i1==i2);//輸出true
integer i1 = 400;
integer i2 = 400;
system.out.println(i1==i2);//輸出false
但是兩種浮點數型別包裝類float,double沒有實現常量池技術
double i1=1.2;
double i2=1.2;
system.out.println(i1==i2);//輸出false
2 應用場景:integer i1=40;
integer i1=integer.valueof(40);
integer i1 = new integer(40)
integer i1 = 40;
integer i2 = 40;
integer i3 = 0;
integer i4 = new integer(40);
integer i5 = new integer(40);
integer i6 = new integer(0);
system.out.println("i1=i2 " + (i1 == i2));
system.out.println("i1=i2+i3 " + (i1 == i2 + i3));
system.out.println("i1=i4 " + (i1 == i4));
system.out.println("i4=i5 " + (i4 == i5));
system.out.println("i4=i5+i6 " + (i4 == i5 + i6));
system.out.println("40=i5+i6 " + (40 == i5 + i6));
i1=i2 true
i1=i2+i3 true
i1=i4 false
i4=i5 false
i4=i5+i6 true
40=i5+i6 true
,首先i5和i6進行自動拆箱操作,進行數值相加,即i4 == 40。然後integer物件無法與數值進行直接比較,所以i4自動拆箱轉為int值40,最終這條語句轉為40 == 40進行數值比較。
string str1 = "abcd";
string str2 = new
string("abcd");
system.out.println(str1==str2);//false
string str1 = "str";
string str2 = "ing";
string str3 = "str" + "ing";
string str4 = str1 + str2;
system.out.println(str3 == str4);//false
string str5 = "string";
system.out.println(str3 == str5);//true
public
static final string a = "ab"; // 常量a
public
static final string b = "cd"; // 常量b
public
static
void
main(string args) else
} s等於t,它們是同乙個物件
public
static final string a; // 常量a
public
static final string b; // 常量b
static
public
static
void
main(string args) else
} s不等於t,它們不是同乙個物件
會建立幾個字串物件,在字串常量池中儲存幾個引用麼?
public
static
void
main(string args)
true
false
false
true
public
class test
}class other
package other;
public
class other
true
true
true
true
false
true
包裝類常量池
包裝類的常量池 當將基本資料型別 整形 進行自動裝箱時,裝箱後的物件的字面值,如果是在 128 127之間,會先檢查常量池中是否有相同字面值的 物件,如果有,則將常量池的物件的位址給引用變數。除了double float都有自己的常量池 char 裝 u0000 boolean true false...
基本型別包裝類的常量池技術
j a的基本型別包裝類中有6中實現了常量池技術 byte short,integer,long characher boolean。另外兩種浮點數型別double和float沒有實現該技術。六種實現常量池技術的包裝類中byte,short,integer,long,character這5種整型的包裝...
包裝類的作用
包裝類的作用是為了方便對基本資料型別進行操作.包裝型別有 integer,short,byte,long,float,double,character,boolean,biginteger,bigdecmail基本型別和引用型別的區別有以下幾點 包裝型別的作用 包裝類是為了方便對基本資料型別進行操作...