Java中的StringBuffer类用于创建可变的(可修改的)字符串对象。与String类不同的是,StringBuffer对象的内容可以进行更改。

需要注意的是,Java的StringBuffer类是线程安全的,即多个线程不能同时访问它。因此,它是安全的,并且可以保持顺序。

StringBuffer 类的重要构造函数

构造函数描述
StringBuffer()它创建一个初始容量为 16 的空字符串缓冲区。
StringBuffer(String str)它使用指定的字符串创建一个字符串缓冲区。
StringBuffer(int capacity)它创建一个具有指定容量作为长度的空字符串缓冲区。

StringBuffer类的方法

修饰符和类型方法描述
public synchronized StringBufferappend(String s)它用于将指定的字符串附加到此字符串。append() 方法被重载,如 append(char)、append(boolean)、append(int)、append(float)、append(double) 等。
public synchronized StringBufferinsert(int offset, String s)用于在指定位置插入带有此字符串的指定字符串。insert() 方法重载,如 insert(int, char)、insert(int, boolean)、insert(int, int)、insert(int, float)、insert(int, double) 等。
public synchronized StringBufferreplace(int startIndex, int endIndex, String str)它用于替换指定 startIndex 和 endIndex 的字符串。
public synchronized StringBufferdelete(int startIndex, int endIndex)用于从指定的startIndex 和endIndex 中删除字符串。
public synchronized StringBufferreverse()用于反转字符串。
public intcapacity()它用于返回当前容量。
public voidensureCapacity(int minimumCapacity)它用于确保容量至少等于给定的最小值。
public charcharAt(int index)用于返回指定位置的字符。
public intlength()它用于返回字符串的长度,即字符总数。
public Stringsubstring(int beginIndex)它用于从指定的 beginIndex 返回子字符串。
public Stringsubstring(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

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想