文章目录
提示
StringBuilder类依旧按照之前String类的五步走:
- 先介绍StringBuilder的所属包
- 介绍StringBuilder的作用
- 介绍StringBuilder的字段摘要
- 介绍StringBuilder的构造方法
- 介绍StringBuilder的方法
一、什么是StringBuilder
StringBuilder属于java.lang.StringBuffder包下,也就是使用的时候不用导包。
StringBuilder是线程安全的可变字符序列。一个类似于 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 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
二、 StringBuilder的构造方法
常用的构造方法
1.StringBuffer()
构造一个无参对象
2.StringBuffer(int capacity)
构造一个不带字符,但具有指定初始容量的字符串缓冲区。
3.StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
三、 StringBuilder 的常用方法
1.append(任意类型的参数) 追加字符串序列
apend()中的参数可以是任意类型;比如:bool,int,double,float,char,char[ ]。。
案例:
StringBuilder sb = new StringBuilder();
//1.在字符串后面追加字符序列
StringBuilder sbs = sb.append(123).append('a').append(12.34).append("sb");
System.out.println(sbs);//结果123a12.34sb
- 输出结果:123a12.34sb
- 这里使用了链式编程。链式编程就是如果调用一个方法后结果仍然是一个对象,那么就可以接着调用返回结果类型的方法;
- 上述案例中调用append()后的结果仍然为StringBuilder类型的对象,所以可以接着调用StringBuilder类中的方法。
2.reverse() 反转字符串
案例
StringBuilder sb = new StringBuilder("123a12.34sb");
//2.字符串反转字符串
StringBuilder sbs = sb.reverse() ;
System.out.println(sbs);//结果为:bs43.21a321
3.length() //返回字符串的个数
StringBuilder sb = new StringBuilder("123");
//3.返回字符串的个数
StringBuilder sbs = sb.legth();
System.out.println(sbs);//结果 3
四、 StringBuffer
1.与StringBuilder区别
相同点:
- StringBuffer与StringBuilder的构造方法,方法是一样的。也就是StringBuilder所有的方法StringBuilder也可以用。
不同点:
- StringBuffer是线程安全的可变字符序列。StringBuilder是线程不安全的。
- StringBuffer用于多线程,StringBuilder用于单线程。