标签:字符串操作 初始 情况 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