码迷,mamicode.com
首页 > 其他好文 > 详细

String&StringBuilder&StringBuffer

时间:2018-12-17 23:57:01      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:字符串操作   初始   情况   build   初始化   变量   并且   缓冲   +=   

三个类的主要区别在于运行速度与线程安全;

运行速度:StringBuilder > StringBuffer > String
原因:StringBuilder和StringBuffer是变量,String是常量;若String str = "abc"; str += "de";,str被初始化为abc,之后jvm创建一个新对象"abcde",将这个新对象赋值给str,而原来的"abc"会被垃圾回收机制回收,所以String对象的操作实际上是一个不断创建新对象并且将旧对象回收的过程;而对StringBuilder和StringBuffer的操作是直接对变量进行更改,不包含对象的创建与回收操作。

注:
String str = "abc" + "de"; //这个操作作用和String str = "abcde";相同,所以会很快,
String str1 = "abc", str2 = "de"; str1 = str1 + str2; //这个操作会很慢。

线程安全:StringBuilder是线程不安全的,StringBuffer是线程安全的。

String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

String&StringBuilder&StringBuffer

标签:字符串操作   初始   情况   build   初始化   变量   并且   缓冲   +=   

原文地址:https://www.cnblogs.com/yuanfei1110111/p/10134363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!