StringBuffer
1 概述
-
字符串缓冲区
-
被final修饰不能被继承
-
线程安全,可变的字符序列。
-
字符串缓冲区可以安全地被多个线程使用。 这些方法在必要时进行同步,以便任何特定实例上的所有操作都按照与所涉及的各个线程所执行的方法调用顺序一致的顺序发生。
-
StringBuffer的主要
StringBuffer
是append
和insert
方法,它们被重载以便接受任何类型的数据。append
方法总是在缓冲区的末尾添加这些字符;insert
方法将insert
添加到指定点。
2 构造方法
StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。 StringBuffer(CharSequence seq) 构造一个包含与指定的相同字符的字符串缓冲区 CharSequence 。 StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定的初始容量。 StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。
3 成员方法
int capacity() 返回当前容量。 int length() 返回长度(字符数)。 容量:理论值 长度:实际值
添加功能
StringBuffer append(String str) 添加到字符缓冲区的末尾 返回本身 有很多重载 StringBuffer insert(int dstOffset, String s) 在指定位置插入 返回本身 有很多重载
删除功能
StringBuffer delete(int start, int end) 删除从指定位置开始到指定位置结束的内容 StringBuffer deleteCharAt(int index) 删除指定索引的字符
替换
StringBuffer replace(int start, int end, String str)
反转
StringBuffer reverse()
截取功能
String substring(int start) String substring(int start, int end)
4 String和StringBuffer之间的转换
package com.demo; public class Demo { public static void main(String[] args) { //String---StringBuffer String s = "aaa"; //方式一:构造方法 StringBuffer sb = new StringBuffer(s); //方式二:append方法 StringBuffer sb2 = new StringBuffer(); sb2.append(s); //StringBuffer---String //方式一:toString StringBuffer sb3 = new StringBuffer(s); String ss = sb3.toString(); //方式二:String(StringBuffer buffer) String sss = new String(sb3); } }
StringBuilder
概述
-
被final修饰,无法被继承
-
一个可变的字符序列
-
不保证同步。此类设计用作简易替换为
StringBuffer
在正在使用由单个线程字符串缓冲区的地方 -
主要的
append
和insert
方法append
方法始终在构建器的末尾添加这些字符;insert
方法将insert
添加到指定点。
构造方法与成员方法与StringBuffer差不多
String,StringBuffer ,StringBuilder的区别
-
String是final修饰的,不可变,每次操作都会产生新的String对象
-
StringBuffer和StringBuilder 都是在原对象上操作的
-
StringBuffer是线程安全的,StringBuilder是线程不安全的
-
StringBuffer方法都是synchronized修饰的
-
-
性能 StringBuilder>StringBuffer>String
-
使用场景:
-
经常需要改变字符串内容时使用StringBuffer ,StringBuilder
-
优先使用StringBuilder ,多线程使用共享变量时使用StringBuffer
-