String 类和 StringBuffer 类有什么区别?
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 但可以产生相同的结果。
“字符串: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.....
字符串只是一个字符串,不能更改。