常量池技術對包裝類的作用

2021-08-19 22:00:53 字數 2747 閱讀 6948

對常量池和方法區有乙個清晰的認識,那麼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基本型別和引用型別的區別有以下幾點 包裝型別的作用 包裝類是為了方便對基本資料型別進行操作...