永发信息网

说明string和stringbuffer的优缺点,并举例说明?

答案:3  悬赏:0  手机版
解决时间 2021-01-24 13:40
说明string和stringbuffer的优缺点,并举例说明?
最佳答案
1. String 类
  String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。
String a = "a"; //假设a指向地址0x0001
a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。
因此String的操作都是改变赋值地址而不是改变值操作。

2. StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。

3.StringBuffer
  StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类。

4.线程安全
StringBuffer 线程安全
StringBuilder 线程不安全

5.速度
一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的。

6.总结
(1).如果要操作少量的数据用 = String
(2).单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
(3).多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
全部回答
楼上两位正解
StringBuffer已经被StringBuilder取代了
使用StringBuilder最主要的理由就是1楼说的第一条
String对象就算是失去了引用也不会被垃圾处理器,如果你的String需要用多个String拼凑而成的话会产生大量的无用String对象 这些String对象不会被处理掉 会造成内存泄漏
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
(3分)请你写一篇百字短文描述官渡之战的场
3m9010口罩和9501哪个更适合中国人佩戴
探究细菌和真菌的分布实验中,不正确的操作是
2015年快过去了吗?
珠海市金湾区审计局地址有知道的么?有点事想
下列选项中对社会支持理论的描述正确的是()。
人的生命与金钱相比,哪个重要?谈谈你对这个故
我在太阳能光伏膜车间上班车间里有种刺眼刺鼻
2013年12月31日,华泰公司因对中联公司的长期
坏蛋是怎样炼成的4电子书免费看
求助一道c语言编程题,有100匹马和100担货,
小孩做包皮手术要多少长时间完全恢复
【the dog's poop是什么意思宇航员炮灰:你的
七台河职业学院好吗?
对中枢神经系统的发育和功能具有重要的直接影
推荐资讯
保定乐悦汽车销售服务有限公司地址好找么,我
把15个桃分给甲、乙、丙三个同学,使甲得到的
【行政公文】3行政公文按内容的性质和特点来
明德立志和明德砺志的区别
龙润茶地址好找么,我有些事要过去
乐多港奥特莱斯购物中心地址在什么地方,我要
自己在豆瓣网发布的文章如何能够出现在百度的
胆囊结石手术费用是多少?
淘宝卖家设置关注微博优惠5元自动优惠怎么弄
下列句子有语病的一项是  A. 在20多年演艺
猫拉血酸臭是怎么回事
英语中has/have要怎么区别
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?