定義:StringBuilder用于創(chuàng)建和操作字符序列可變的字符串(對象)烫扼。
//StringBuilder類型的變量/常量所標識的內存空間存儲的是StringBuilder實例的內存地址滓窍。注:當我們直接打印StringBuilder類型的變量/常量時与帆,屏幕上輸出的是String實例實例變量的值(即String實例中包含的字符序列)了赌。注:這是因為執(zhí)行打印操作時,JVM隱式調用該StringBuilder實例的“toString()”方法生成了相應String實例鲤桥,繼而隱式調用該String實例的“toString()”方法返回了String實例實例變量的值揍拆。
//相較于String類型的字符串(對象),StringBuilder類型的字符串(對象)在進行字符串拼接操作時效率更高茶凳。
例1:
String s = “Test”;
for(int i = 0; i < 3; i++) {
s += i;
} ???//運行時間較長
注:程序運行過程中共產生1個String實例嫂拴,3個StringBuilder實例。
例2:
StringBuilder sb = new StringBuilder(“Test”);
for(int i = 0; i < 3; i++) {
sb = sb.append(i);
} ???//運行時間較短
注:程序運行過程中共產生1個String實例贮喧,1個StringBuilder實例筒狠。
StringBuilder類的基本實現:
[import java.lang.StringBuilder;]//“java.lang”包下的類無需顯式導入即可使用。
①StringBuilder 變量名 = new StringBuilder(); ??——創(chuàng)建StringBuilder實例箱沦,空字符串
②StringBuilder 變量名 = new StringBuilder(“字符序列”辩恼,本質也是String實例/String實例); ???——創(chuàng)建StringBuilder實例
變量名.方法名(); ???——調用方法
//以方式①創(chuàng)建String類的實例時,會將該實例以“實例”的形式存儲在堆內存中谓形。此時灶伊,變量所標識的內存空間存儲的是“實例”的內存地址。
//以方式②創(chuàng)建String類的實例時寒跳,不但會將該實例以“字面量”的形式存儲在常量池中聘萨,還會將該實例以“實例”的形式存儲在堆內存中谒撼。此時偿洁,變量所標識的內存空間存儲的是“實例”的內存地址蛉加。
//每個字面量在常量池中只有一份贰谣,同一個字面量在常量池中不會產生多個副本伤为。
StringBuilder類的常用方法:
①append(基本數據類型的數據/String數據類型的數據) ——用于將StringBuilder實例實例變量的值(即StringBuilder實例中包含的字符序列)和實參值(會自動轉換為String類型的數據)進行拼接竟贯,并用拼接后的結果替換該實例實例變量的值迂曲。
②reverse() ?——用于對StringBuilder實例實例變量的值(即StringBuilder實例中包含的字符序列)進行反轉禀忆,并用反轉后的結果替換該實例實例變量的值爆惧。
③length() ???——用于獲取字符串的長度
④toString() ???——用于生成相應的String實例
⑤equals() ???——用于比較StringBuild實例在內存中的地址是否相同狸页。注:StringBuild類沒有重寫Object類的“equals()”方法。