JDK原始碼解析 StringBuilder

2021-10-08 09:31:30 字數 2852 閱讀 1355

​ stringbuilder和stringbuffer一樣,都是繼承自抽象類abstractstringbuilder類,也是乙個可變的字串行。stringbuilder和stringbuffer非常相似,甚至有互相相容的api,不過,stringbuilder不是執行緒安全的,這是和stringbuffer的主要區別。

​ stringbuilder類被設計成在不需要多執行緒安全的情況下替換stringbuffer類的。如果程式中不需要多執行緒安全,推薦使用stringbuilder類,因為沒有了同步的操作而速度上比較快。

層次關係和stringbuffer相同,都是繼承自abstrcatstringbuilder,並且實現或間接實現了三個藉口。

將比較與stringbuffer,少了乙個tostring緩衝區,其他一致

stringbuilder()預設的構造方法

同stringbuffer 都是呼叫父類的構造方法,初始容量同為16

stringbuilder(int capacity) 給定容量的構造方法

同stringbuffer 給定引數 呼叫父類的構造方法,根據引數指定容量。

stringbuilder(string str)給定初始值的構造方法

呼叫父類的構造方法,得到乙個容量為str長度+16空間的stringbuilder,然後將字串str新增其中。

stringbuilder(charsequence seq)

呼叫父類的構造方法,得到乙個容量為seq長度+16空間的stringbuilder,然後將字串行seq新增其中。

重寫父類的方法,父類的具體實現可以參考部落格jdk原始碼解析—abstractstringbuilder

(object obj)

(string str)

(stringbuffer sb)

(charsequence s)

(charsequence s,

int start,

int end)

(char

str)

(char

str,

int offset,

int len)

// 下面是新增資料基本型別

(boolean b)

(char c)

(int i)

(long lng)

(float f)

(double d)

delete(int start, int end)

刪除從start位置開始到end-1的字元

deletecharat(int index)

刪除指定位置的字元

replace(int start, int end, string str)

將start開始到end-1位置的字串替換成str

insert方法也有很多,具體都是傳入的引數不同

父類的具體實現可以參考部落格jdk原始碼解析—abstractstringbuilder

public stringbuilder insert

(int index,

char

str,

int offset,

int len)

public stringbuilder insert

(int offset, object obj)

@override

public stringbuilder insert

(int offset, string str)

@override

public stringbuilder insert

(int offset,

char

str)

public stringbuilder insert

(int dstoffset, charsequence s)

public stringbuilder insert

(int dstoffset, charsequence s,

int start,

int end)

// 下面是在指定位置插入基本資料型別

public stringbuilder insert

(int offset,

boolean b)

public stringbuilder insert

(int offset,

char c)

public stringbuilder insert

(int offset,

int i)

public stringbuilder insert

(int offset,

long l)

public stringbuilder insert

(int offset,

float f)

public stringbuilder insert

(int offset,

double d)

int indexof(string str) 從頭開始尋找 返回匹配字串str的首位下標

int indexof(string str, int fromindex),從fromindex位置開始尋找 返回匹配字串str的首位下標

int lastindexof(string str)從後開始尋找,返回匹配字串str的首位下標

lastindexof(string str, int fromindex) 從fromindex位置開始尋找,返回匹配字串str的首位下標

stringbuilder reverse() 顛倒字串

JDK原始碼解析 ThreadLocal

說明 本文是jdk 1.8版本 1.簡介 threadlocal 又叫做執行緒本地變數,也被稱為執行緒本地儲存。threadlocal 為 變數 在每乙個執行緒中建立 乙個 副本 不是原來變數的引用 每乙個執行緒都會獨自擁有變數副本,而不會相互影響。2.實現方式 1 set 方法,因為執行緒thre...

JDK原始碼解析 LinkedHashSet

linkedhashset是set集合的乙個實現,具有set集合不重複的特點,同時具有可 的迭代順序,也就是我們插入的順序。底層實現是linkedhashmap 所以僅在構造方法上和hashset有所區別 linkedhashmap和linkedhashset都可以做到有序,但是不同點在於。link...

JDK原始碼解析 Stack

stack是棧的實現類,棧的特點是先進後出。繼承了vector,重寫了5個方法,對vector進行了擴充套件。繼承了vector 3.1push 呼叫父類的addelement方法,新增到陣列的尾部,也就是棧頂 public e push e item 3.2 pop 出戰操作。public syn...