当前位置首页 > 百科> 正文

String StringBuilder

2019-11-25 10:55:14 百科
String StringBuilder

String StringBuilder

类 String 表示字元串, 比如“ abc ”。 类 StringBuilder 表示可改变大小的字元序列( sequence of characters ),多个字元组成字元序列,字元序列和字元串是同一个意思。二者的区别在于, String 类型的字元串是常量,字元串创建出来后不允许修改。而 StringBuilder 类型的字元串是可修改的。

基本介绍

  • 中文名:String StringBuilder
  • 外文名:字元串 字元串构建
  • JDK:JDK1.0 JDK1.5
  • 範畴:Java 程式语言
类说明
类 StringBuilder 表示可改变大小的字元序列( sequence of characters ),多个字元组成字元序列,字元序列和字元串是同一个意思。该类所提供的 API 和类 StringBuffer 提供的 API 是兼容的。区别在于,类 StringBuffer 的 API 是同步的,即是执行绪安全的,而类 StringBuilder 的 API 不是同步的,即执行绪不安全的。通常来说,若声明的字元串出现单执行绪的环境,即不是执行绪共享的环境,不存线上程安全的问题,应该使用类 StringBuilder 代替类 StringBuffer ,这是类 StringBuilder 设计的初衷。理由是,类 StringBuilder 的大多数 API 的运行速度要快于类 StringBuffer 所对应的 API 。但再次强调,类 StringBuilder 的 API 是执行绪不安全的。
类 StringBuilder 有两个核心的 API ,分别是 append 和 insert 。前者的功能是在原来的字元串的尾部追加指定的字元串,后者的功能是在原来的字元串的指定位置插入指定的字元串。
比如,现在有个 StringBuilder 类型的字元串[ start ],声明为
String StringBuilder
StringBuilder z = new StringBuilder("start"); 
那幺,
z.append("le") 等于 startle 
表示在原来字元串[ start ]的尾部追加字元串[ le ]。
z.insert(4, "le")  等于 starlet
表示在原来字元串[ start ]的偏移量为 4 的位置,插入指定的字元串[ le ],原先处于偏移量为 4 以及之后的所有字元,全部向后移动,腾出空间插入指定的字元串[ le],如右图所示。
package cn.test;public class Test00 {    public static void main(String[] args) {        // 输出 startle         // StringBuilder z = new StringBuilder("start");        // System.out.println(z.append("le"));                // 输出 starlet         StringBuilder z = new StringBuilder("start");        System.out.println(z.insert(4, "le"));    }}
由此可见, z.append("x") 和 z.insert(z.length(), "x") 的效果是一样的,二者都是把字元串添加原先字元串的尾部。
package cn.test;public class Test {    public static void main(String[] args) {        // 输出 startx        StringBuilder z = new StringBuilder("start");         System.out.println(z.append("x"));                // 输出 startx        // StringBuilder z = new StringBuilder("start");         // System.out.println(z.insert(z.length(), "x"));    }}
每个 StringBuilder 类型的字元串都有一个空间,具备一定容量用来存放字元串。若是字元串的长度很长,空间已经无法存放得下字元串,那幺,该空间的容量会自动变大。
在多执行绪环境下, StringBuilder 类型的字元串是执行绪不安全的。也就是说,多个执行绪共享同一个 StringBuilder 类型的字元串,会引发执行绪安全的问题。若是需要保证字元串是执行绪安全的,使用 StringBuffer 代替StringBuilder 。
创建StringBuilder 实例的时候,不能传递一个 null 对象作为实参,否则会抛出异常NullPointerException ,如下所示:
StringBuilder z = new StringBuilder(null);// Exception in thread "main" java.lang.NullPointerException
在 JDK 1.5 定义了StringBuilder 这个类。
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net