java - 第13行代碼看不太懂,sb和str不是同一個類型啊?
問題描述
public class TestStringBuffer{ public static void main(String[] args){StringBuffer sb = new StringBuffer();sb.append('abc');sb.append('123');System.out.println('sb = ' + sb); sb.insert(3, '--'); System.out.println('sb = ' + sb); sb.delete(2,6); System.out.println('sb = ' + sb);sb.reverse();System.out.println('sb = ' + sb); String str = sb.toString(); // 13行System.out.printf('str = ' + str); }}
問題解答
回答1:StringBuffer String
這怎么會是一個類型呢,StringBuffer在做字符串連接 + 或者輸出的時候會隱式執(zhí)行toString()轉(zhuǎn)化為String
第13行是顯示的執(zhí)行 sb.toString() 將sb轉(zhuǎn)換為 String
回答2:StringBuffer :字符串緩沖區(qū)String :字符串當(dāng)對字符串進行修改的時候,需要使用 StringBuffer 和 StringBuilder 類。和 String 類不同的是,StringBuffer 和 StringBuilder 類的對象能夠被多次的修改,并且不產(chǎn)生新的未使用對象。
StringBuilder 類在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在于 StringBuilder 的方法不是線程安全的(不能同步訪問)。
由于 StringBuilder 相較于 StringBuffer 有速度優(yōu)勢,所以多數(shù)情況下建議使用 StringBuilder 類。然而在應(yīng)用程序要求線程安全的情況下,則必須使用 StringBuffer 類。
