日期:2014-05-20  浏览次数:20720 次

既生瑜,何生亮?
今天看java2,看完String和StringBuffer有点不解,一个是定长不可变的,一个不定长可变,其它操作没什么大的区别呀,为什么要定义成两个类呢?

------解决方案--------------------
是没有什么区别。string不是有一个+操作么?用它会产生新的对象!
而StringBuffer会自动在内存后面加上新的,不会产生新的对象!
------解决方案--------------------
String 被定义后,赋给它的值在内存中申请一段空间后,并把指针指向这个变量;当你要修改这个变量的值时,并不是把这段空间的的数据覆盖掉,而是重新再申请了一段空间后,再将那个变量的指针指向这段空间,原来空间的那些数据是不能被修改的;
而 StringBuffer 就不一样了,它申请的空间后,里面的的数据是可以被修改的/

不知道是一大进步,还是一大倒退:
进步就是节省了内存空间,倒退是这样编的程序有致命的弱点..
------解决方案--------------------
String 是不可变类。在String pool中生成的,StringBuffer是可变类,是在缓冲区进行操作的。之后还有个StringBuilder用于单线程的.
自己可以慢慢看书,看看他们之间的区别
------解决方案--------------------
fulong258(【轰隆隆】) ( ) 信誉:100 Blog

说的是,

实际项目中,StringBuffer用的比较多,
------解决方案--------------------
各有个的用。String类的不变性带来了String共享,加快了对String的处理。StringBuffer类是动态的对String进行操作,符合实际的一些需要。
------解决方案--------------------
StringBuffer主要是考虑效率问题,
比如某个方法作用是转换字符串,但不能一步完成,
可考虑先建立StringBuffer操作,完成后再一次转成String。

事实上StringBuffer还是线程安全的,
Java1.6提供了StringBuilder,非线程安全,效率更高。
------解决方案--------------------
你要是有n多的内存,不怕内存被吃光可以用String.
否则,适当的时候用一下StringBuffer
------解决方案--------------------
StringBuffer在做连接操作的时候比String要快多了...1.5里面又多了一个StringBuilder效率更好了..

------解决方案--------------------
用JDK1.5里的StringBuilder是目前被推荐的。
------解决方案--------------------
String字符串连接的时候会生成新对象,StringBuilder不会
------解决方案--------------------
skyyun(落枫飘零) ( ) 信誉:100 Blog 2007-3-26 14:02:09 得分: 0



String字符串连接的时候会生成新对象,StringBuilder不会



-----------------------------------------


String字符串连接的时候会生成新对象---> 新对象为StringBuffer对象,toString为Sting对象.

------解决方案--------------------
String是一个不变类,当执行+,+=操作时,他会新建一个String对象,把新值赋进去,这样效率低。而StringBuffer就不一样,它建立一个缓存,等全部字符串添加完后,才创建一个对象,效率高。
------解决方案--------------------
oracs(黑色柳丁) ( ) 信誉:100 Blog 2007-03-26 20:58:09 得分: 0


String是一个不变类,当执行+,+=操作时,他会新建一个String对象??---> 是StringBuffer对象!!