Java–常用类
一、StringBuffer
1.1 概述
- 线程安全的可变字符序列。
- 一个类似于
String
的字符串缓冲区,但能修改。 - 但通过某些方法调用可以改变该序列的长度和内容。
1.2 创建对象
public class Demo04 {
public static void main(String[] args) {
/**
构造方法摘要
StringBuffer()
构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer(int capacity)
构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
*/
// 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer buffer01 = new StringBuffer();
System.out.println(buffer01.length());
System.out.println(buffer01.capacity());
// 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer buffer02 = new StringBuffer(1024);
System.out.println(buffer02.length());
System.out.println(buffer02.capacity());
// 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
StringBuffer buffer03 = new StringBuffer("abcdefg");
System.out.println(buffer03.length());
System.out.println(buffer03.capacity());
}
}
1.3 常用方法
增加数据
public class Demo05 {
public static void main(String[] args) {
/**
* 方法摘要
* 增
StringBuffer append(Object obj)
追加 Object 参数的字符串表示形式。
StringBuffer insert(int offset, Object obj)
将 Object 参数的字符串表示形式插入此字符序列中。
*/
// 空的字符串缓冲区,内容为0,容量16
StringBuffer buffer = new StringBuffer();
buffer.append("Hello");
System.out.println(buffer.length());
System.out.println(buffer.capacity());
buffer.append(true);
System.out.println(buffer.length());
System.out.println(buffer.capacity());
buffer.append(3.14);
System.out.println(buffer.length());
System.out.println(buffer.capacity());
// 在指定位置插入元素
buffer.insert(1, 222);
System.out.println(buffer);
System.out.println(buffer.length());
System.out.println(buffer.capacity());
/**
* 扩容:
* ensureCapacityInternal(count + len); 确保容量
* newCapacity(minimumCapacity) 计算容量
* 默认扩容: int newCapacity = (value.length << 1) + 2;
* 默认扩容不足:
* 如果没有超过MAX_ARRSY_SIZE,扩容到需要的容量
* 如果超过MAX_ARRSY_SIZE,没有超过Integer.MAX,扩容需要的容量
* 如果超过Integer.MAX,报错OutOfMemoryError
*/
buffer.append("01234567890123456789");
System.out.println(buffer.length());
System.out.println(buffer.capacity());
}
}
删改查数据
public class Demo06 {
public static void main(String[] args) {
/**
*
* 删
StringBuffer delete(int start, int end)
移除此序列的子字符串中的字符。
StringBuffer deleteCharAt(int index)
移除此序列指定位置的 char。
* 改
void ensureCapacity(int minimumCapacity)
确保容量至少等于指定的最小值。
StringBuffer replace(int start, int end, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。
StringBuffer reverse()
将此字符序列用其反转形式取代。