一:string物件的兩種建立方式:
(1)第一種方式: string str1 = 「aaa」; 是在常量池中獲取物件(「aaa」 屬於字串字面量,因此編譯時期會在常量池中建立乙個字串物件,如果常量池中已經存在該字串物件則直接引用)
(2)第二種方式: string str2 = new string(「aaa」) ; 一共會建立兩個字串物件乙個在堆中,乙個在常量池中(前提是常量池中還沒有 「aaa」 象)。
system.out.println(str1==str2);//false
二:string型別的常量池比較特殊。它的主要使用方法有兩種:
(1)直接使用雙引號宣告出來的string物件會直接儲存在常量池中。
(2)如果不是用雙引號宣告的string物件,可以使用 string 提供的 intern 方法。 string.intern() 是乙個 native 方法,它的作用是: 如果執行時常量池中已經包含乙個等於此 string 物件內容的字串,則返回常量池中該字串的引用; 如果沒有,則在常量池中建立與此 string 內容相同的字串,並返回常量池中建立的字串的引用。
string s1 = new string(「aaa」);
string s2 = s1.intern();
string s3 = 「aaa」;
system.out.println(s2);//aaa
system.out.println(s1 == s2); //false,因為乙個是堆記憶體中的string物件乙個是常量池中的string物件
system.out.println(s2 == s3);//true, s1,s2指向常量池中的」aaa「
三:字串拼接:
string a = 「a」;
string b = 「b」;
string str1 = "a" + "b";//常量池中的物件
string str2 = a + b; //在堆上建立的新的物件
string str3 = "ab";//常量池中的物件
system.out.println(str1 == str2);//false
system.out.println(str1 == str3);//true
system.out.println(str2 == str3);//false
四:== 和 equals():
(1)「」 用於比較基本資料型別時比較的是值,用於比較引用型別時比較的是引用指向的位址。
(2)object 中的equals() 與 「」 的作用相同,但string類重寫了equals()方法,比較的是物件中的內容。
public
boolean
equals
(object anobject)
if(anobject instanceof
string
)return
true;}
}return
false
;}
關注C 細節 標準庫string型別
一.首先作為一種標準庫型別,string存在四種基本的建構函式。如下 string s 預設建構函式,s為空串 string s s1 用s1來初始化s string s my blog 將s初始化為乙個字串字面值 string s n,c 將s初始化為n個 c 的副本 二.對於輸入主要就是cin ...
redis實現總結 String型別
1.redis只會使用使用c字串作為字面量 用在一些無需對字串值進行修改的地方 比如列印日誌 redislog redis warning,redis is now ready to exit,在大多數情況下,redis使用sds dynamic string,簡單動態字串 作為字串表示 常數複雜度...
String類的細節
一 tab和空格替換 封裝checkutil時,為了避免字串中間有空格,比如 zhang san 所以我用如下正則替換,str.replace 然後寫測試類,只能字母加數字 param str return public static boolean isalphabetandnum string ...