一、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. spring security 管理会话 多个用户不可以使用同一个账号登录系统

    多个用户不能使用同一个账号同时登陆系统. 1. 添加监听器 在web.xml中添加一个监听器,这个监听器会在session创建和销毁的时候通知Spring Security. <listener ...

  2. [转]linux援救模式:linux rescue使用详细图解

    网上很多网友问怎么进rescue 模式,不知道怎么用rescue来挽救系统.  现在我来图解进入rescue (示例系统为RHEL 3) 1.用安装光盘或者硬盘安装的方式进入安装界面,在shell 中 ...

  3. 由easyui的tab在ie下渲染失败,发现的一个有意义的问题

    今天项目组的同事反映,在IE浏览器下,所有用easyui编写的tab控件都加载不出来,只会显示一个Loading的提示在控件的内容显示区. 刚分析这个问题,首先怀疑是使用easyui的tab的脚本写法 ...

  4. 微信公众号内H5调用微信支付国内服务商模式

    最近在折微信公众号内H5用JSAPI调用微信支付,境内服务商版支付,微信支付给出的官方文档以及SDK不够详细,导至我们走了一些弯路,把他分享出来,我这边主要是用PHP开发,所以未加说的话示例都是PHP ...

  5. demo工程的清单文件及activity中api代码简单示例

    第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...

  6. BizTalk开发系列(二十) 类型作用域

    Orchestration中的Type概念跟.NET 里的Class一样,可以在Orchestration开过过程中将多个实例绑定到一种类型.Orchestration 视图里包括的类型有Port T ...

  7. CMS .NET 程序框架 从2.0/3.5升级到4.0 版本后 需要调整的地方

    问题一: document.forms1.action 不可使用 需要修改程 document.forms[0] .NET 程序框架 从2.0/3.5升级到4.0 版本后,document.forms ...

  8. 创建Struct2的web应用(一)

    1.上http://struts.apache.org/ 下载Struct2 2.解压缩,将lib文件夹内的部分JAR复制到java web应用的WEB-INF/lib目录下.所需JAR: commo ...

  9. struct大小

    对齐. #include <iostream> using namespace std; struct S1 { int a; char b; char c; }; struct S2 { ...

  10. 自己用node.js 搭建APP服务器,然后用AFNetworking 请求 报如下错误:App TransportSecurity has blocked a cleartext HTTP (http://) resource load since it isinsecure. Temporary exceptions can be configured via your app's Info.

    "App TransportSecurity has blocked a cleartext HTTP (http://) resource load since it isinsecure ...