String型別細節總結

2021-10-04 10:29:57 字數 1525 閱讀 3791

一: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 ...