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); } }
?
轉載于:https://www.cnblogs.com/huameitang/p/10528646.html
總結
以上是生活随笔為你收集整理的StringBuilder与String互转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 错误随笔记
- 下一篇: thinkPHP源码目录介绍