String、Stringbuffer、Stringbuilder的区别

来源:互联网 发布:51单片机项目外包网 编辑:程序博客网 时间:2024/06/05 12:07

我们都知道String、Stringbuffer、Stringbuilder他们都是表示字符串的,但是他们之间也是有区别的。

String 字符串常量(不可变)

StringBuffer 字符串常量(线程安全)

StringBuilder 字符串常量(非线程安全)

string、stringbuilder、stringbuffer都实现了CharSequence接口,charsequence是一个定义字符串操作的接口,它里边只包括length()、charAt(int index)、subSequence(int start, int end)这几个API。

但是,string、stringbuffer、stringbuilder他们对CharSequence接口的实现不一样。

String是直接实现的charsequence接口,而stringbuilder和stringbuffer是继承于AbstractStringbuilder,实现的charsequence接口。

String类型每次进行改变的时候,都是生成新的对象,然后将指针指向新的对象,所以说,如果字符串内容经常改变,不建议使用

string类型,因为每次创建对象会对系统性能产生影响,特别是当内存中有许多无用对象,就会触发GC,这样速度会更慢。

使用stringbuffer是在字符串后面追加内容,不会创建新的对象。StringBuffer中主要使用的是append()和insert()方法。append方法是将要添加的内容追加到字符串的尾部,而insert方法是将内容添加到指定的地方。

StringBuilder大致和StringBuffer相同,他两的区别是Stringbuffer是线程安全的,Stringbuilder是线程不安全的。如果字符串缓冲区内被单线程占用,就使用Stringbuilder,如果是被多线程占用的话,就使用Stringbuffer。

如果是操作少量字符串,使用String,如果是大量数据,单线程操作数据就使用Stringbuilder,多线程操作数据就使用Stringbuffer。