Java基础--String、stringbuffer、stringbuilder

来源:互联网 发布:如何申请淘宝店铺号 编辑:程序博客网 时间:2024/05/17 09:24

前言:java常用且基础的String相关的总结,其中重在说明三者运行效率

String,StringBuffer,StringBuilder,关于这三个类在字符串处理中有什么优缺点,从下面几点说明:

1.速度:StringBuilder > StringBuffer > String
String <(StringBuffer,StringBuilder)的原因
String:字符串
StringBuffer:字符串变量 StringBuilder:字符串

举例:
1 String s = “chenshi”;
2 s = s+1;
3 System.out.print(s);// result : chenshi1
分析:String是“字符串量”,也就是不可改变的对象。
以上代码创建对象s,赋予一个chenshi,然后再创建一个新的对象s用来 执行第二行代码,也就是说我们之前对象s并没有变化,还存在,其值任为chenshi。
由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,因此其执行效率会底。

而StringBuffer与StringBuilder是字符串量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些额外的对象进行操作,速度就快了。

2.一个特殊的例子:
1 String str = “Today” + “ is” + “ great”;
3 StringBuffer builder = new StringBuilder(“Today”).append(“is”).append(“ great”);
他们的速度相当,因为String str = “Today is great”;
和 String str = “Today” + “ is” + “ great”;等同的。

3.StringBuilder与 StringBuffer
StringBuilder:线程非安全的
StringBuffer:线程安全的
  当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

总结
1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 3岁宝宝乱啃东西怎么办 闹钟的指针松了怎么办 手机想让它横屏怎么办 教孩子写作业头都被气炸了怎么办 2岁宝宝大小脸怎么办 宝宝2岁半不认识颜色怎么办 宝宝11个多月突然排斥妈妈怎么办 5个月婴儿粘妈妈怎么办 3岁宝宝记不住颜色怎么办 3岁宝宝不认字怎么办 墙纸被宝宝弄上各种颜色怎么办 三周半的孩子不认识数字怎么办 3岁幼儿不会数数怎么办 四岁宝宝不认识数字怎么办 三岁宝宝不认识数字怎么办 4岁半了不认识数字怎么办 5岁小朋友数字不认识怎么办 孩子读一年级字都不识几个怎么办 宝宝二周多了不分颜色怎么办 4岁儿童手指脱皮怎么办 孩子老是不会写2怎么办 宝宝胃浅容易吐怎么办 农村户口小孩去城里读书怎么办 小孩从城市回农村读书怎么办 天冷了怎么办教案反思 小孩上幼儿园不爱学习怎么办 曰光灯管监控要反光怎么办 立邦乳胶漆墙面脏了怎么办 橱柜门黑色边颜色花了怎么办 地板上有真实漆怎么办 吸了泡泡球的气怎么办 办公室上班坐着太累怎么办 金雀盆景生虫怎么办 租的房子墙脏怎么办 租住个厕所对着卧室怎么办 农村的房子没有房产证怎么办 墙面漆颜色深了怎么办 浴室门对卧室门怎么办 卧室40多个平方太大怎么办 卧室门洞太窄了怎么办 刷漆的墙面脏了怎么办