问题描述
为什么说String是长度不可变的,而StringBuffer是长度可变的?
解决方案
解决方案二:
String对象是不可变的StringBuffer对象是可变的
解决方案三:
String在堆中内存分配是死的
解决方案四:
我之前举过一个例子:String是一个产品,而且这个产品是不可变的StringBuffer和StringBuilder是两个生产String的工厂流水线StringBuffer速度慢,但是(线程)安全性好StringBulder速度快,但是(线程)安全性差
解决方案五:
我的意思是它们各自的底层是怎么实现这种不可变和可变的
解决方案六:
看源码里面都是一个char[],只不过各自的public方法,String都是对这个char[]只读的,StringBuilder大部分都是在操作char[]和其他相关信息。
解决方案七:
当newString()的时候,地址和空间都是分配好的,如果String+String会另外分配一个地址和空间newStringBuffer()的时候,只有地址,不限制空间,在append的时候,在原地址扩展空间
解决方案八:
这是这个语言设计的两种类型,就像人是可以长高的,棍子长不高
解决方案九:
这个该地的,要怎么解释呀,就如别人问你你怎么是人一样呀!!!举着例子不要介意!!String是长度不可变的stringbuffer是长度可变的,可以使用,toString()将其转换为String。Stringbuffer的安全性比较好!!!!
时间: 2024-11-02 21:05:50