StringBuffer与StringBuilder
Java是一种非常流行的面向对象语言。在Java中,提供String类来保存不能修改的字符序列(一旦初始化)。或者,Java编程语言提供两种类型的可变字符序列。也就是说,当程序员需要修改某个字符串(在初始化之后),他们需要使用StringBuffer类或StringBuilder类,而不是String类。StringBuffer是在JDK1.0中引入的,StringBuilder类是在JDK1.5中引入的,实际上是作为StringBuffer类(用于单线程环境)的替代品。
什么是StringBuffer?
StringBuffer类是在JDK1.0中引入的。StringBuffer类属于java.lang语言包并从泛型继承java.lang.object. 程序员不能进一步扩展它,因为它是一个final类。StringBuffer类实现可序列化、可附加和CharSequience接口。StringBuffer类的对象可以保存可变且线程安全的字符序列。这意味着,它非常类似于String对象,但是在初始化StringBuffer对象之后,字符序列(长度和内容)可以随时更改。但是,这应该使用StringBuffer类提供的特定方法来完成。StringBuffer类中有两个主要操作。它们由append()和insert()方法提供。这些方法重载,因此它们能够接受任何类型的数据,如integer和long。这两种方法首先将任何输入转换为字符串,然后将相应字符串的字符添加(追加或**)到现有的Stribbuffer对象。append()方法将转换后的字符串添加到现有StringBuffer对象的末尾,而insert()方法将向指定的**点添加输入字符。
什么是StringBuilder?
StringBuilder类是在JDK1.5中引入的。StringBuilderAPI非常类似于StringBufferAPI。实际上,StringBuilder类实际上是作为StringBuffer类的替代品引入的(对于单线程应用程序)。StringBuilder类属于java.lang语言包并从泛型继承java.lang.object. 它是一个final类,因此程序员不能扩展它。StringBuilder类实现可序列化、可附加和CharSequience接口。StringBuilder类的对象可以包含可变但不是线程安全的字符序列。这意味着,它非常类似于String对象,但是字符串可以随时更改。但StringBuilder类不提供同步,因此据称比使用StringBuffer类更快。StringBuilder类提供的append()和insert()方法具有与StringBuffer类中完全相同的功能。
StringBuffer和StringBuilder有什么区别?