一、StringBuilder

  一个可变的字符序列。此类提供了一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候使用的时候。如果可能,简易有限采用该类,因为在大多数实现中,它比StringBuffer要快。

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

  简言之就是append是在当前一引用末尾添加,例如:sb.insert(4,"le"),结果为startle;insert,可以指定添加的位置例如:sb.insert(4,"le"),结果为starlet.

二、StringBuffer

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

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

  StringBuffer上的操作主要是append和insert方法,可以重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串添加或插入到字符串缓冲区中。append方法始终将这些字符串天剑到缓冲区末端;二insert方法则在指定的点添加字符。和StringBuider的append和insert方法一样。

  通常,如果sb引用StringBuider的一个实例,则sb.append(x)和sb.insert(sb.length(),x)具有相同的效果。

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

  每个字符串缓冲区都有一定的容量。如果字符串缓冲区包含的字符序列长度没有超出此容量,就无需分配新的内容缓冲区的容量。

如果内部缓冲区溢出,则此容量自动增大。从JDK5开始,为该类填充了一个单个线程使用的等价类,即StringBuilder。与该类相比,通常应该优先使用StringBuilder类,因为它支持所有相同的操作,但由于它不执行同步,所以速度要更快。

StringBuilder和StringBuffer区别的更多相关文章

  1. JAVA基础之——String、StringBuilder、StringBuffer区别和使用场景

    本文主要讲解String.StringBuilder.StringBuffer区别和应用场景 本文以jdk1.8为例 1 String 操作过程:每次赋值时新建一个String对象. 2 String ...

  2. (转)String,StringBuilder,StringBuffer区别

    Java中的String,StringBuilder,StringBuffer三者的区别 注:转自-博客园-酥风 最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuild ...

  3. JAVA_String、StringBuilder、StringBuffer区别

    String.StringBuilder.StringBuffer均为字符串 类 需要注意的一些问题 String StringBuilder StringBuffer 一旦创建,不能对其内容进行更改 ...

  4. String,StringBuilder,StringBuffer区别

    一.String,StringBuilder,StringBuffer的大概了解 大家知道String,StringBuilder,StringBuffer三个的基本应用场景. String会一直创建 ...

  5. String、StringBuilder、StringBuffer区别

    =====================================String=================================★1.它在java.lang包中.String类 ...

  6. String、StringBuilder、StringBuffer 区别

    public static void testStringBuffer(){ long start System currentTimeMillis(); StringBuffer sbuf = ne ...

  7. java中String、stringbuilder、stringbuffer区别

    1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有"final"修饰符,所以可以知道string对象是不可变的.每次对String对象进行改变的时候其实都等 ...

  8. String,StringBuilder和StringBuffer区别

    String字符串常量 StringBuilder 字符串变量(非线程安全) StringBuffer  字符串变量(线程安全) 1.String String是字符串常量,为不可改变对象 Strin ...

  9. String,StringBuilder 和StringBuffer区别

    1. String 和字符串缓冲区的区别是: String 是一个不可变的字符序列 , 而字符串缓冲区是可变的 2. StringBuffer 是一个线程安全的可变字符序列 ; 线程安全对应的效率低 ...

随机推荐

  1. 使用 GCC 调试程序

    系统 Ubuntu 调试示例: #include <stdio.h> int func(int n) { ,i; ;i<n;i++) { sum+=i; } return sum; ...

  2. Python之路(二)

    (1)python的内置函数(BIF) python3中内置了70多个BIF,常用的几个有: list():创建一个新的空列表. range():输入次数参数,返回一个迭代固定次数的迭代器. enum ...

  3. 把应用程序exe 注册成为windows 服务的方法

    由于在Windows 服务器上必须要启动一个软件,提供外网访问内网的客户端软件,但是由于每次远程服务器之后会注销当前用户,所以客户端软件就会自动退出,那么我在外网的系统就不能支持访问了. 解决方案:将 ...

  4. 最新php一句话木马

    <?php $uf=”snc3″; $ka=”IEBldmFbsK”; $pjt=”CRfUE9TVF”; $vbl = str_replace(“ti”,””,”tistittirti_rti ...

  5. # 20145334赵文豪 《Java程序设计》第7周学习总结

    20145334赵文豪 <Java程序设计>第7周学习总结 教材学习内容总结 第十三章 时间与日期 13.1.1时间的度量 1.格林威治时间(GMT):参考太阳到达最高点,有时间误差. 2 ...

  6. Empire C:Basic 1

    一.首先,从一个C程序开始: ///Name:Hello World ///Author:JA ///Date:2015-2-4 #include <stdio.h> //包含标准库的信息 ...

  7. 罪恶装备 Xrd REVELATOR 3D进化出的非照片真实视觉

    GUILTY GEAR Xrd REVELATOR 3D进化出的非照片真实视觉 罪恶装备系列是用2D日系动画一样的惊异视觉来吸引玩家的. 最新续品[GUILTY GEAR Xrd-REVELATOR- ...

  8. PHP Header下载文件在IE文件名中文乱码问题

    解决PHP Header下载文件在IE文件名中文乱码有两种常见的,一种是是把页面编码改成utf8,另一种是对中文url进入urlencode编码,根据UA检测,区别下载,就可以解决了 $filenam ...

  9. Thinking in Java——笔记(5)

    Initialization & Cleanup Guaranteed initialization with the constructor In Java, the class desig ...

  10. 移除\禁用 jquery mobile 元素样式渲染

    在元素上加属性. data-role="none"