Java教程-Java StringBuffer 类

Java中的StringBuffer类用于创建可变的(可修改的)字符串对象。与String类不同的是,StringBuffer对象的内容可以进行更改。
需要注意的是,Java的StringBuffer类是线程安全的,即多个线程不能同时访问它。因此,它是安全的,并且可以保持顺序。
StringBuffer 类的重要构造函数
构造函数 | 描述 |
---|---|
StringBuffer() | 它创建一个初始容量为 16 的空字符串缓冲区。 |
StringBuffer(String str) | 它使用指定的字符串创建一个字符串缓冲区。 |
StringBuffer(int capacity) | 它创建一个具有指定容量作为长度的空字符串缓冲区。 |
StringBuffer类的方法
修饰符和类型 | 方法 | 描述 |
---|---|---|
public synchronized StringBuffer | append(String s) | 它用于将指定的字符串附加到此字符串。append() 方法被重载,如 append(char)、append(boolean)、append(int)、append(float)、append(double) 等。 |
public synchronized StringBuffer | insert(int offset, String s) | 用于在指定位置插入带有此字符串的指定字符串。insert() 方法重载,如 insert(int, char)、insert(int, boolean)、insert(int, int)、insert(int, float)、insert(int, double) 等。 |
public synchronized StringBuffer | replace(int startIndex, int endIndex, String str) | 它用于替换指定 startIndex 和 endIndex 的字符串。 |
public synchronized StringBuffer | delete(int startIndex, int endIndex) | 用于从指定的startIndex 和endIndex 中删除字符串。 |
public synchronized StringBuffer | reverse() | 用于反转字符串。 |
public int | capacity() | 它用于返回当前容量。 |
public void | ensureCapacity(int minimumCapacity) | 它用于确保容量至少等于给定的最小值。 |
public char | charAt(int index) | 用于返回指定位置的字符。 |
public int | length() | 它用于返回字符串的长度,即字符总数。 |
public String | substring(int beginIndex) | 它用于从指定的 beginIndex 返回子字符串。 |
public String | substring(int beginIndex, int endIndex) | 它用于从指定的 beginIndex 和 endIndex 返回子字符串。 |
什么是可变字符串?
可以修改或更改的字符串称为可变字符串。StringBuffer 和 StringBuilder 类用于创建可变字符串。
1)StringBuffer类的append()方法
append() 方法将给定参数与此字符串连接起来。
StringBufferExample.java
class StringBufferExample{
public static void main(String args[]){
StringBuffer sb=new StringBuffer("Hello ");
sb.append("Java");//现在原始字符串已更改
System.out.println(sb);//打印 Hello Java
}
}
输出:
Hello Java
2)StringBuffer的insert()方法
insert() 方法在给定位置插入带有此字符串的给定字符串。
StringBufferExample2.java
class StringBufferExample2{
public static void main(String args[]){
StringBuffer sb=new StringBuffer("Hello ");
sb.insert(1,"Java");//现在原始字符串已更改
System.out.println(sb);//打印 HJavaello
}
}
输出:
HJavaello
3) StringBuffer replace() 方法
replace() 方法从指定的 beginIndex 和 endIndex 替换给定的字符串。
StringBufferExample3.java
class StringBufferExample3{
public static void main(String args[]){
StringBuffer sb=new StringBuffer("Hello");
sb.replace(1,3,"Java");
System.out.println(sb);//打印 HJavalo
}
}
输出:
HJavalo
4)StringBuffer的delete()方法
StringBuffer类的delete()方法删除指定beginIndex到endIndex之间的String。
StringBufferExample4.java
class StringBufferExample4{
public static void main(String args[]){
StringBuffer sb=new StringBuffer("Hello");
sb.delete(1,3);
System.out.println(sb);//打印 Hlo
}
}
输出:
Hlo
5) StringBuffer reverse() 方法
StringBuilder 类的 reverse() 方法反转当前字符串。
StringBufferExample5.java
class StringBufferExample5{
public static void main(String args[]){
StringBuffer sb=new StringBuffer("Hello");
sb.reverse();
System.out.println(sb);//打印 olleH
}
}
输出:
olleH
6) StringBuffer capacity() 方法
StringBuffer类的capacity()方法返回缓冲区的当前容量。缓冲区的默认容量为16。当字符数超过当前容量时,容量会增加为(原容量 2)+ 2。例如,如果当前容量是16,则新的容量将为(16 2)+ 2 = 34。
StringBufferExample6.java
class StringBufferExample6{
public static void main(String args[]){
StringBuffer sb=new StringBuffer();
System.out.println(sb.capacity());//默认16
sb.append("Hello");
System.out.println(sb.capacity());//现在16
sb.append("java is my favourite language");
System.out.println(sb.capacity());//现在 (16*2)+2=34 即 (oldcapacity*2)+2
}
}
输出:
16
16
34
7) StringBuffer ensureCapacity() 方法
StringBuffer 类的 ensureCapacity() 方法确保给定的容量是当前容量的最小值。如果大于当前容量,则将容量增加 (oldcapacity2)+2。例如,如果您当前的容量是 16,则它将是 (162)+2=34。
StringBufferExample7.java
class StringBufferExample7{
public static void main(String args[]){
StringBuffer sb=new StringBuffer();
System.out.println(sb.capacity());//默认16
sb.append("Hello");
System.out.println(sb.capacity());//现在16
sb.append("java is my favourite language");
System.out.println(sb.capacity());//现在 (16*2)+2=34 即 (oldcapacity*2)+2
sb.ensureCapacity(10);//现在没有变化
System.out.println(sb.capacity());//现在34
sb.ensureCapacity(50);//现在 (34*2)+2
System.out.println(sb.capacity());//现在70
}
}
输出:
16
16
34
34
70