StringBuilder與String互轉


StringBuilder類是一個可變的字符序列。

StringBuilder() 
          構造一個不帶任何字符的字符串生成器,其初始容量為 16 個字符。
StringBuilder(CharSequence seq) 
          構造一個字符串生成器,它包含與指定的 CharSequence 相同的字符。
StringBuilder(int capacity) 
          構造一個不帶任何字符的字符串生成器,其初始容量由 capacity 參數指定。
StringBuilder(String str) 
          構造一個字符串生成器,並初始化為指定的字符串內容。

StringBuilder類的幾個常用方法:

append(任意類型)  追加到字符串后面

reverse 反轉字符串

insert(int offset, 任意類型)  在某個index后插入字符串

toString()  返回String類的對象

先看一段String類的字符串拼接的代碼。

 

String s = "hello" 會在常量池開辟一個內存空間來存儲”hello"。

s += "world"會先在常量池開辟一個內存空間來存儲“world"。然后再開辟一個內存空間來存儲”helloworld“。

這么以來,001與002就成為了垃圾內存空間了。這么簡單的一個操作就產生了兩個垃圾內存空間,如果有大量的字符串拼接,將會造成極大的浪費。

StringBuilder的作用

上面的例子可以知道String類的字符串拼接會產生大量的垃圾內存空間。但是StringBuilder的字符串拼接是直接在原來的內存空間操作的,即直接在hello這個內存空間把hello拼接為helloworld。

來證明下:

public class StringBuilderTest { public static void main(String[] args){ StringBuilder sb = new StringBuilder(); StringBuilder sb2 = sb.append("hello"); System.out.println(sb); System.out.println(sb2); // 引用類型,判斷的是他們的內存地址是否一樣 System.out.println(sb == sb2); } }

輸出結果是:

hello
hello
true

String類與StringBuilder類的相互轉換

1.String類轉換為StringBuilder類

public class String12 { public static void main(String[] args){ String s = "hello"; StringBuilder sb = new StringBuilder(s); System.out.println(sb); } }
2.StringBuilder類轉換為String類
public class String12 { public static void main(String[] args){ StringBuilder sb = new StringBuilder(); sb.append("abc").append("efg"); String s = sb.toString(); System.out.println(s); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM