StringBuilder

java.lang

类 StringBuilder

java.lang.Object

java.lang.StringBuilder

所有已实现的接口:

Serializable, Appendable, CharSequence

public final class StringBuilder

extends Object

implements Serializable, CharSequence

一个可变的字符序列。此类提供一个与
StringBuffer
兼容的 API,但不保证同步。该类被设计用作
StringBuffer
的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比
StringBuffer
要快。


StringBuilder
上的主要操作是
append

insert
方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串生成器中。append
方法始终将这些字符添加到生成器的末端;而
insert
方法则在指定的点添加字符。

例如,如果
z
引用一个当前内容为"start"的字符串生成器对象,则该方法调用
z.append("le")
将使字符串生成器包含"startle",而
z.insert(4, "le")
将更改字符串生成器,使之包含"starlet"。

通常,如果 sb 引用
StringBuilder
的实例,则
sb.append(x)

sb.insert(sb.length(), x)
具有相同的效果。
每个字符串生成器都有一定的容量。只要字符串生成器所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区。如果内部缓冲区溢出,则此容量自动增大。


StringBuilder
的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用
StringBuffer。

从以下版本开始:

1.5

 

 

 

 

StringBuffer

java.lang

类 StringBuffer

java.lang.Object

java.lang.StringBuffer

所有已实现的接口:

Serializable, Appendable, CharSequence

public final class StringBuffer

extends Object

implements Serializable, CharSequence

线程安全的可变字符序列。一个类似于
String
的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

StringBuffer
上的主要操作是
append

insert
方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串缓冲区中。append
方法始终将这些字符添加到缓冲区的末端;而
insert
方法则在指定的点添加字符。

例如,如果
z
引用一个当前内容是"start"的字符串缓冲区对象,则此方法调用
z.append("le")
会使字符串缓冲区包含"startle",而
z.insert(4, "le")
将更改字符串缓冲区,使之包含"starlet"。

通常,如果 sb 引用
StringBuilder
的一个实例,则
sb.append(x)

sb.insert(sb.length(), x)
具有相同的效果。

只要发生有关源序列(如在源序列中添加或插入)的操作,该类就只在执行此操作的字符串缓冲区上而不是在源上实现同步。

每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即
StringBuilder。与该类相比,通常应该优先使用
StringBuilder
类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

从以下版本开始:

JDK1.0

 

 

 

 

 

 

 

 

 

参考文献:

    JDK API 1.6.0 中文版

StringBuilder和StringBuffer的更多相关文章

  1. 从为什么String=String谈到StringBuilder和StringBuffer

    前言 有这么一段代码: public class TestMain { public static void main(String[] args) { String str0 = "123 ...

  2. 探秘Java中的String、StringBuilder以及StringBuffer

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...

  3. (原)String、StringBuilder、StringBuffer作为形参

    今天在刷一道算法题时,突然遇到StringBuilder作为形参和String作为形参时,最终得出来的结果不同.故尝试了几个demo看看它们之间的区别. 当String类型作为参数时, public ...

  4. String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别 (String系列之1)

    本章主要介绍String和CharSequence的区别,以及它们的API详细使用方法. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/string01. ...

  5. Java基础(32):String与StringBuilder、StringBuffer的区别(String类)

    在Java中,除了可以使用 String 类来存储字符串,还可以使用 StringBuilder 类或 StringBuffer 类存储字符串,那么它们之间有什么区别呢? String 类具有是不可变 ...

  6. StringBuilder与StringBuffer的区别(转)

    相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类.St ...

  7. 探秘Java中String、StringBuilder以及StringBuffer

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...

  8. java基础知识回顾之---java StringBuilder与StringBuffer异同点

    /*         * StringBuilder与StringBuffer异同点:         *          * 使用方法与StringBuffer完全一样         * Str ...

  9. String StringBuilder以及StringBuffer

    例一:[看了威哥视频,下面更好理解] package sunjava; public class String_test { public static void main(String[] args ...

  10. java中String、StringBuilder、StringBuffer三者的区别

    在Java项目开发中,字符串是最长使用的数据类型,而有关字符串的String.StringBuilder.StringBuffer三者又常常让人分不清楚什么时候该使用哪个. 特此整理一下. Strin ...

随机推荐

  1. C++ 对象没有显式初始化

    C++ 对象没有显式初始化,结果是什么? 首先考虑非静态对象 1.方法内的局部对象: a.类类型:调用default构造方法 b.基本类型:值不确定 2.类中的数据成员: a.类类型:调用defaul ...

  2. Codeforces Round #274 (Div. 1) C. Riding in a Lift 前缀和优化dp

    C. Riding in a Lift Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/480/pr ...

  3. Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 1) A. Bear and Poker 分解

    A. Bear and Poker Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/573/pro ...

  4. 解决statusStrip控件上的项目不能靠右对齐的问题

    在c#中用到了状态栏控件StatusStrip,但当我想把StatusStrip上某个StatusLabel靠右对齐时出了问题. 按照MSDN中的办法,是设置ToolStripStatusLabel的 ...

  5. SQL中declare申明变量

    在sql语句中加入�变量. declare @local_variable data_type 声明时须要指定变量的类型, 能够使用set和select对变量进行赋值, 在sql语句中就能够使用@lo ...

  6. 使用sql生成UUID

    在SQLServer中使用该sql语句可以生成GUID:select cast(NEWID() as varchar(36)) as uuid 通过一下语句将GUID中的'-'字符去掉: select ...

  7. 哈夫曼(Huffman)编码

    哈夫曼编码(Huffman Coding)是一种非常经典的编码方式,属于可变字长编码(VLC)的一种,通过构造带权路径长度最小的最优二叉树以达到数据压缩的目的.哈弗曼编码实现起来也非常简单,在实际的笔 ...

  8. [小技巧]兼容IE6的纯CSS背景半透明文字不透明

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. USB相关知识

    USB基础知识概论 如何实现Linux下的U盘(USB Mass Storage)驱动: How to WriteLinux USB MSC (Mass Storage Class) Driver U ...

  10. Android XML文件布局各个属性详解

    第一常用类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android: ...