急!!!String和StringBuffer

lichang_xi 2010-05-19 09:46:10
为什么说String是长度不可变的,而StringBuffer是长度可变的?
...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
木子0204 2010-05-20
  • 打赏
  • 举报
回复
这个该地的,要怎么解释呀,
就如别人问你你怎么是人一样呀!!!
举着例子不要介意!!
String 是长度不可变的
stringbuffer是长度可变的,可以使用,toString()将其转换为String。
Stringbuffer的安全性比较好!!!!
hymarx 2010-05-19
  • 打赏
  • 举报
回复
当new String()的时候,地址和空间都是分配好的,如果String+String 会另外分配一个地址和空间
new StringBuffer()的时候,只有地址,不限制空间,在append的时候,在原地址扩展空间
shine333 2010-05-19
  • 打赏
  • 举报
回复
看源码
里面都是一个char[],只不过各自的public方法,String都是对这个char[]只读的,StringBuilder大部分都是在操作char[]和其他相关信息。
lichang_xi 2010-05-19
  • 打赏
  • 举报
回复
我的意思是它们各自的底层是怎么实现这种不可变和可变的
shine333 2010-05-19
  • 打赏
  • 举报
回复
我之前举过一个例子:
String是一个产品,而且这个产品是不可变的
StringBuffer和StringBuilder是两个生产String的工厂流水线
StringBuffer速度慢,但是(线程)安全性好
StringBulder速度快,但是(线程)安全性差
龙四 2010-05-19
  • 打赏
  • 举报
回复
String在堆中内存分配是死的
龙四 2010-05-19
  • 打赏
  • 举报
回复
String对象是不可变的
StringBuffer对象是可变的
绿光 2010-05-19
  • 打赏
  • 举报
回复
这是这个语言设计的两种类型,就像人是可以长高的,棍子长不高

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧