String類和常量池

2021-10-09 06:46:48 字數 1645 閱讀 3923

1、string物件建立物件的兩種方法

string str1="health";//常量池中建立

strinng str2=new string("health");//堆中建立

system.out.println(str1==str2);//false

2、string型別的常量池比較特殊

*string a=「aaa」;//在常量池中建立

*string a=「aaa」;  string b=a.intern();  a==b//這個b直接指向a中在常量池中建立的aaa

3、string字串拼接問題:

string str1="aaa";

string str2="bbb";

string str3="aaa"+"bbb";//常量池

string str4=str1+str2;//堆

string str5=str1+"bbb";//堆

string str6="aaabbb";//常量池

system.out.println(str3==str4);//false

system.out.println(str4==str5);//false

system.out.println(str5==str6);//false

system.out.println(str6==str3);//true

4、8種包裝型別和常量池:

~byte、short、integer、long、character、boolean;這五種包裝類預設建立了數值為【-128,127】的相應型別的快取資料,只要超出就會建立新的物件。

~兩個浮點型別float、double沒有實現常量池技術。

integer  i1=120;

integer i2=120;

system.out.println(i1==i2);//true

integer i3=128;

integer i4=128;

system.out.println(i3==i4);//false

integer i5=-129;

integer i6=-129;

sysout.println(i5==i6);//false

integer比較豐富的例子

integer i1=new integer(40);

integer i2=new integer(40);

integer i6=new integer(0);

integer i3=40;

integer i4=40;

integer i5=0;

system.out.println(i1==i2);//false

system.out.println(i1==i2+i6);//true

system.out.println(i3==i4);//true

system.out.println(i3==i4+i5);//true

system.out.println(40==i6+i2);//true

語句i1==i2+i6這樣的語句並不適合integer,他會直接執行拆箱轉換成int型別,這樣就直接比較的是值。

String類和常量池

1.全域性字串常量池 string pool 全域性字串常量池中存放的內容是在類載入完成後存到string pool中的,在每個vm中只有乙份,存放的是字串常量的引用值 在堆中生成字串物件例項 2.class檔案常量池 class constant pool class常量池是在編譯的時候每個cla...

String類和常量池

string物件的兩種建立方式 string str1 abcd 先檢查字串常量池中有沒有 abcd 如果字串常量池中沒有,則建立乙個,然後 str1 指向字串常量池中的物件,如果有,則直接將 str1 指向 abcd string str2 new string abcd 堆中建立乙個新的物件 s...

String 類和常量池

1 string 物件的兩種建立方式 string str1 abcd 先檢查字串常量池中有沒有 abcd 如果字串常量池中沒有,則建立乙個,然後 str1 指向字串常量池中的物件,如果有,則直接將 str1 指向 abcd string str2 new string abcd 堆中建立乙個新的物...