String&StringBuilder&StringBuffer

Posted yuanfei1110111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String&StringBuilder&StringBuffer相关的知识,希望对你有一定的参考价值。

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

运行速度: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的主要内容,如果未能解决你的问题,请参考以下文章

String&StringBuffer&StringBuilder

java中String&StringBuffer&StringBuilder

第7题String & StringBuffer & StringBuilder

Java的String&StringBuffer&StringBuilder

StringBuilder && StringBuffer原理浅析

JavaAPI学习:API && String类 && Stringbuffer && StringBuilder