面試重點 String類的深入解析

2021-10-04 17:41:49 字數 1978 閱讀 8398

string:字串,使用一對「」引起來表示

1.string宣告為final的,不可被繼承

2.string實現了serializable介面:表示字串是支援序列化的 實現了comparable介面:表示string可以比較大小

3.string內部定義了final char value 用於儲存字串資料

4.string:代表不可變的字串行。

簡稱:不可變性體現:

1.當對字串重新賦值時,需要重寫指定記憶體區域賦值,不能使用原有的value進行賦值

2.當對現有的字串進行連線操作時,也需要重行指定記憶體區域賦值,不能使用原有的value

3.當呼叫string的replace()方法修改指定字元或字串時,也需要重新指定記憶體區域

4.通過字面量的方式(區別於new)給乙個字串賦值,此時的字串值宣告在字串常量池中。

5.字串常量池中是不會儲存相同的內容的字串的。

@test

public

void

test1()

string的例項化方式:方式一:通過字面量定義的方式

方式二:通過new + 構造器的方式

面試題:string s = new string(「abc」);方式建立物件,在記憶體中建立了幾個物件?

兩個:乙個是堆空間new 結構,另乙個是char對應的常量池中的資料:「abc」

@test

public

void

test2()

底層儲存模型結論:1.常量與常量的拼接結果在常量池。且常量池中不會存在相同內容的常量

2.只要其中乙個是變數,結果就在堆中

3.如果拼接的結果呼叫intern()方法,返回值就在常量池中

常見的一些關於string的比較

@test

public

void

test3()

底層儲存模型

string物件的建立

string str =

"hello"

//本質上this.value = new char;

string s1 =

newstring()

; = string.original;

string s2 =

newstring

(string original)

; = arrays.copyof(value,value.length);

string s3 =

newstring

(char

a);string s4 =

newstring

(char

a ,int startindex,

int count)

;

public

class

stringexame

;public

void

change

(string str,

char ch)

public

static

void

main

(string[

] args)

}

深入理解String類

string類代表的就是字串,string類物件建立之後不可變。string str hello 方式1 string str2 newstring hello 方式2 char array 方式3 string str3 newstring array string str1 hello stri...

深入解析C 中的string類

一,c語言的字串 在c語言裡,對字串的處理一項都是一件比較痛苦的事情,因為通常在實現字串的操作的時候都會用到最不容易駕馭的型別 指標。比如下面這個例子 example 1 char str 12 hello char p str p h 改變第乙個字母 example 2 char ptr hell...

面試 手寫String類

include includeclass cmystring cmystring cmystring char pdata else 當cmystring cmtest2 cmtest1 時或cmystring cmtest2 cmtest1 時呼叫 cmystring cmystring cons...