String Stringbuilder Stringbuffer的区别
Posted liyy7520
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String Stringbuilder Stringbuffer的区别相关的知识,希望对你有一定的参考价值。
可变性
String 是final修饰的类,其中是使用final来修饰字符数组来保存字符串的,所以string是常量,值不可变的类。
stringbuffer和stringbuilder都是继承自abstractStringbuilder类,abstractStringbuilder也是使用字符数组来保存字符串的,但是没有使用final修饰,所以对象是可变的。
线程安全
而stringbuffer对方法加入了同步锁或者对调用的方法加入了同步锁,所以是线程安全的。而StringBuilder没有对方法加锁,所以是线程不安全的。
性能
String,对于string的操作,每次新增字符串,都是生成一个新的string对象,指针会指向新的string对象地址。
Stringbuffer每次操作都是对stringbuffer对象本身的操作,不会产生新的对象,相对会在性能上优于string,而stringbuilder在性能上,会比使用stringbuffer提升10-15%的性能的提升。
使用过程中:
对于少量字符的操作,string操作更方便。
对于单线程的字符串操作stringbuilder更快。
而对于多线程的字符串操作,stringbuffer更安全。
以上是关于String Stringbuilder Stringbuffer的区别的主要内容,如果未能解决你的问题,请参考以下文章
String/StringBuilder/StringBuffer
String,StringBuffer,StringBuilder效率优先关系说明
StringBuilder的appendStringBuffer的append和String str = "a"+"b"的区别?
Java中StringStringBuffer和StringBuilder的区别