【JAVA基础】13 StringBuffer类
-
StringBuffer类概述
-
线程安全的可变字符序列。
- 类似String的字符串缓冲区,但不能修改。
-
在任意时间点上都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
-
-
StringBuffer和String的区别
-
String是一个不可变的字符序列
-
StringBuffer是一个可变的字符序列
- StringBuffer不能像String用“+”与任意类型数据进行拼接
- 但有append,insert,delete等方法改变序列的长度和内容
-
-
2. StringBuffer类的构造方法
-
StringBuffer的构造方法:
-
public StringBuffer(): 无参构造方法
-
public StringBuffer(int capacity): 指定容量的字符串缓冲区对象
-
public StringBuffer(String str): 指定字符串内容的字符串缓冲区对象
-
-
StringBuffer的方法:
-
public int capacity():返回当前容量。 理论值(不掌握)
-
public int length(): 返回长度(字符数)。 实际值
-
-
案例演示
-
构造方法和长度方法的使用
-
package com.heima.stringbuffer; public class Demo1_StringBuffer { /** StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。 StringBuffer(CharSequence seq) public java.lang.StringBuilder(CharSequence seq) 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。 StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。 StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。 */ public static void main(String[] args) { StringBuffer sb = new StringBuffer(); System.out.println(sb.length()); // 输出0 System.out.println(sb.capacity()); // 输出16 StringBuffer sb2 = new StringBuffer(10); System.out.println(sb2.length()); // 输出0 System.out.println(sb2.capacity()); // 输出10 StringBuffer sb3 = new StringBuffer("heima"); System.out.println(sb3.length()); // 输出5 System.out.println(sb3.capacity()); // 输出21,字符串的length() + 初始容量16 } }
3. StringBuffer的添加功能
-
StringBuffer的添加功能
-
public StringBuffer append(String str):
-
可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
- append是一个重载的方法,可以添加多种数据类型,如:
- boolean b
- char c
- char[] str
- char[] str,int offset,int len
- CharSequence s
- CharSequence s,int start, int end
- double d
- float f
- int i
- long lng
- Object obj
- String str
- StringBuffer sb
- StringBuffer是字符串缓冲区,当new的时候是在堆内存创建了一个对象,底层是一个长度为16的字符数组。
- 当调用添加的方法时,不会再重新创建对象,在不断向原缓冲区添加字符
-
-
public StringBuffer insert(int offset,String str):
-
在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
-
-
代码示例
-
package com.heima.stringbuffer; public class Demo2_StringBuffer { /** StringBuffer的添加功能 public StringBuffer append(String str): 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身 public StringBuffer insert(int offset,String str): 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身 */ public static void main(String[] args) { method1_append(); method2_insert(); } public static void method2_insert() { StringBuffer sb = new StringBuffer("01234"); sb.insert(3, "heima"); // 在指定位置添加元素,如果没有指定位置的索引就会报索引越界异常 System.out.println(sb); } public static void method1_append() { StringBuffer sb = new StringBuffer(); StringBuffer sb2 = sb.append(true); StringBuffer sb3 = sb.append("heima"); StringBuffer sb4 = sb.append(100); System.out.println(sb.toString()); // StringBuffer类中重写了toString方法,显示的是对象的属性值 System.out.println(sb2.toString()); System.out.println(sb3.toString()); System.out.println(sb4.toString()); } }
-
-