StringBuilder在需要提升效能與使code更簡化時才需要使用
不然平常能用String就用String

 

1. 官網https://docs.oracle.com/javase/tutorial/java/data/buffers.html

02.png

 

2. StringBuilder和String一樣可以用length()來取得長度
但是又多了一個capacity()來代表配置的空間大小
配合建構式來看
a. StringBuilder() 配置的capacity大小為16
b. StringBuilder(int initCapacity) 則是可指定StringBuilder的capacity大小為initCapacity
c. StringBuilder(CharSequence cs) 將目標字串序列cs塞到預設的StringBuikder內
以16 + n的形式配置capacity, 例如字串長度是5, 則capacity會試21
d. StringBuilder(String s) 將目標字串s塞到預設的StringBuikder內
以16 + n的形式配置capacity, 例如字串長度是5, 則capacity會試21

03.png

 

3. Length和Capacity

a. void setLength可以設定StringBuilder的長度
如果新的長度比原本的長度短, 則多的部分會被捨棄
並且capacity的大小和原來一樣
如果新的長度比原本的長度長, 則多的部分會填入空字元\0
b. void ensureCapacity(int minCapacity) 用來設定capacity的值
當預先知道資料大小則可以先配置來達到提升效能的目的
當capacity的值小於一個範圍時則會以一個固定範圍為預設值
像是capacity在34內不管設定多少都會是34, 而超過時就以capacity的設定值為準

而用append來新增字串長度時則會自動增加capacity
有一個公式在, 像是16之後是34然後是70

01.png

 

4. StringBuilder的使用方法

StringBuilder append(boolean b)
StringBuilder append(char c)
StringBuilder append(char[] str)
StringBuilder append(double d)
StringBuilder append(float f)
StringBuilder append(int i)
StringBuilder append(long lng)
StringBuilder append(Object obj)
StringBuilder append(String s)
StringBuilder append(char[] str, int offset, int len)
基本上append就是將參數直接加到StringBuilder裡面
而如果是char[]則可以指定範圍從offset開始長度為len的範圍

StringBuilder delete(int start, int end)
StringBuilder deleteCharAt(int index)
用delete來指定刪除的範圍, 從start開始到end-1的位置
而deleteCharAt則是可以直接刪掉特定位置的char

StringBuilder insert(int offset, boolean b)
StringBuilder insert(int offset, char c)
StringBuilder insert(int offset, char[] str)
StringBuilder insert(int index, char[] str, int offset, int len)
StringBuilder insert(int offset, double d)
StringBuilder insert(int offset, float f)
StringBuilder insert(int offset, int i)
StringBuilder insert(int offset, long lng)
StringBuilder insert(int offset, Object obj)
StringBuilder insert(int offset, String s)
insert就是從目標位置offset開始, 放入特定的值

StringBuilder replace(int start, int end, String s)
用來修改特定字串從start開始, 到end - 1的位置都刪除, 並插入s字串
void setCharAt(int index, char c)
將目標位置的值取代成另一個字元

StringBuilder reverse()
將StringBuilder內的元素全部反轉

String toString()
將StringBuilder轉換成String來使用String上的方法
將String反轉回StringBuilder則是用建構式StringBuilder(String s)

04.png  

arrow
arrow
    文章標籤
    Java StringBuilder
    全站熱搜

    RX1226 發表在 痞客邦 留言(0) 人氣()