string是字符串常量,字符串在java中属于对象。而且,string有一个特性,即初始化了就不可更改。所以每次对string进行的操作其实实战上是新建了一个新的string,将之前的指针指向新的位置。这样的操作对于一些经常需要改变的string值来说,就会造成效率的低下以及造成大量的空间浪费。所以就有了另外的两个类String Buffer和String Builder。
string Buffer和string Builder类的对象可以多次被修改,而且不会每次修改都产生新的对象来浪费空间。所以如果字符串在程序中会被多次修改,可以使用这两种类型来初始化。而string Buffer和string Builder中也有一定的区别。之间最大的区别就是string Buffer是线程安全的,可以在多线程中使用。而string Builder是线程不安全的,不可以在多线程中使用。但是string Builder的速度又优于string Buffer,所以如果是在单线程中,则使用string Builder则更优于string Buffer。
(1)字符修改上的区别(主要)
String:不可变字符串;StringBuffer:可变字符串、效率低、线程安全;StringBuilder:可变字符序列、效率高、线程不安全;(2)初始化中,string可以被赋空值,而后两者不可以。
(1)如果要操作少量的数据用 String;(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;(3)单线程操作字符串缓冲区下操作大量数据StringBuilder(推荐使用)。
本文学习自大佬:https://blog.csdn.net/weixin_41101173/article/details/79677982
转载于:https://www.cnblogs.com/Mask-D/p/10531564.html
相关资源:String StringBuffer和StringBuilder区别之源码解析