Java API中的StringBuffer类
1.StringBuffer类
String字符串类 字符串值不可变,值可以共享
buffer 缓冲区.缓冲器
StringBuffer 字符串缓冲区,作用相当于一个容器,里面存放很多字符串值
特点:
1.线程安全的可变字符序列
2.可以添加任意类型的数据,但是添加进入的数据会被转换成字符串类型
3.StringBuffer类主要是通过append和insert方法进行操作
append添加在字符串的末端
insert添加在字符串的某一位置
通常情况下有索引都是有序的表
4.StringBuffer有索引,可以认为是有序的
5.StringBuffer构建对象会有初始容量,
当存储的元素超出初始容量后会自动扩充
6.JDK5之后,官方提供等价的类StringBuilder
StringBuilder不同步,速度较快
假设你在火车上,只有一个厕所。ABC都在排队。
简单来说,线程同步就是 A进去了,门锁上。
BC只能在外面干等着。这是线程安全的,不会产生问题。
线程不同步就是 A进去的同时,没关门,B也进去了。这是线程不安全。
CRUD操作
添加
插入
删除
替换
StingBuilder类属于线程不安全的,执行效率高,推荐使用该类
package com.Lesson;
// 定义一个字符串缓冲区类
public class JavaAPI_StringBuffer {
public static void main(String[] args) {
StringBuffer stringBuffer = new StringBuffer();
// 增加 插入 删除 替换
// append 在末尾附加.添加
stringBuffer.append("张三");
stringBuffer.append(true);
stringBuffer.append(20);
stringBuffer.append(13.5);
System.out.println(stringBuffer.toString());
// 张三true2013.5
// stringBuffer是有序的
// 转换成字符串类型的值
// insert
stringBuffer.insert(6, "李四");
System.out.println(stringBuffer.toString());
// 张三true李四2013.5
// 插入'男'
stringBuffer.insert(8, '男');
System.out.println(stringBuffer.toString());
// 张三true李四男2013.5
// 删除
// delete(int start,int end)
// 从start到end,不包含end [start,end)
// 注意索引越界问题
StringBuffer delete = stringBuffer.delete(6, 8);//6,7元素
System.out.println("删除之后的剩余的值:"+delete.toString());
// 删除的元素:张三true男2013.5
System.out.println(stringBuffer.toString());
// 张三true男2013.5
// 替换
// replace (int start,int end ,String str);
// 使用给定的String中的字符替换此序列中的子字符串中的字符
// 先删除delete(),在插入insert()
StringBuffer replace = stringBuffer.replace(2, 6, "女性");
System.out.println(stringBuffer.toString());
// 张三女性男2013.5
System.out.println("replace的值:"+replace.toString());
// replace的值:张三女性男2013.5
// 返回的还是替换之后的值
// toString() 打印对象时,JVM会自动调用toString()方法
}
}