0

String 类和 StringBuffer 类有什么区别?

4

2 回答 2

2

字符串是不可变的。他们的内部状态不能改变。StringBuffer 允许您缓慢地添加到对象中,而无需在每次连接时创建新的 String。

使用 StringBUilder 而不是旧的 StringBuffer 是一种很好的做法。


使用 StringBuilder 或 StringBuffer 的常见地方是复杂对象的 toString 方法。假设您希望 toString 方法列出内部数组中的元素。

天真的方法:

String list = ""; 
for (String element : array) {
    if (list.length > 0) 
        list += ", ";
    list += element;
}

return list;

这个方法可以工作,但是每次你使用 += 时,你都在创建一个新的 String 对象。这是不可取的。处理此问题的更好方法是使用 StringBuilder 或 StringBuffer。

StringBuffer list = new StringBuffer(); 
for (String element : array) {
    if (list.length() > 0) 
        list.append(", ");
    list.append(element);
}

return list.toString();

这样,您只创建一个 StringBuffer 但可以产生相同的结果。

于 2013-07-27T01:40:05.983 回答
0

“字符串:http ://docs.oracle.com/javase/tutorial/i18n/text/characterClass.html

字符串缓冲区:http ://docs.oracle.com/javase/6/docs/api/java/lang/StringBuffer.html

任务完成。谷歌是你的朋友

当您说字符串缓冲区时,您可能应该改用字符串构建器。

您可以附加到它们以制作“新”字符串。

StringBuilder sb = new StringBuilder
sb.append("stuff here").append("more stuff here").append.....

字符串只是一个字符串,不能更改。

于 2013-07-27T01:40:10.143 回答