String是不可变字符串,而StringBuffer是可变的
StringBuffer sb = new StringBuffer("abc");这句话:常量池中有“abc”,堆内存中存在一个字符串缓冲区,初始值就是“abc”,初始大小是“abc”的长度加16
String s = new String(sb);这句话:把sb中的值给了s,也就是常量池中的“abc”,那么后面对sb操作对s没影响。
另:api中:java.lang.String
public String(StringBuffer buffer)分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。该字符串缓冲区的内容已被复制,后续对它的修改不会影响新创建的字符串。
参数:
buffer - 一个 StringBuffer
|