StringBuffer类创建字符串
初始化:
- new StringBuffer();创建一个空的字符缓冲区,初始化长度为16个字符容量。
- new StringBuffer(int length);创建一个空的字符串缓冲区,初始化长度为length个字符容量。
- new StringBuffer(String str);创建一个初始化为str的字符缓冲区,初始化长度为16个字符容量。
StringBuffer()构造函数的示例:
public class dome2{
public static void main(String[] args) {
//创建一个空的字符串缓冲区,默认16个字符容量
StringBuffer str=new StringBuffer();
//创建一个空的字符串缓冲区,默认19个字符容量
StringBuffer str1=new StringBuffer(19);
//创建一个又字符的字符串缓冲区,字符容量等于16+2个
StringBuffer str2=new StringBuffer("hi");
//capacity()表示容量大小,不能用length()长度。
System.out.println(str.capacity());
System.out.println(str1.capacity());
System.out.println(str2.capacity());
}
}
结果
16
19
18
StringBuffer是一个线程安全的可变字符序列,可以追加,删除,修改等操作。
追加字符串
append()方法将内容追加到 StringBuffer对象的末尾,可以追加多种类型,如char数组,大部分数值类型,布尔值,char字符,也还可以是 StringBuffer自己本身等等。
代码引用:
public class dome2{
public static void main(String[] args) {
StringBuffer str=new StringBuffer();
str.append(4); //整数类型
str.append(true); //布尔类型
str.append('u'); //char字符类型
str.append(new StringBuffer("nihao")); //StringBuffer对象
str.append(new char[] {'i','k'}); //char字符数组
System.out.println(str.toString());
}
}
结果
4trueunihaoik
修改字符
setCharAt方法通过索引值来替换 StringBuffer对象的字符,不是字符串。
public class dome2{
public static void main(String[] args) {
StringBuffer str=new StringBuffer();
str.append("hello world");
System.out.println(str.toString());
str.setCharAt(6,'j');
str.setCharAt(7,'a');
str.setCharAt(8,'v');
str.setCharAt(9,'a');
str.setCharAt(10,' ');
System.out.println(str.toString());
}
}
结果
hello world
hello java
删除字符
- deleteCharAt()方法是通过索引值删除指定的字符。
- delete() 方法是删除指定范围内的字符串。
public class dome2{
public static void main(String[] args) {
StringBuffer str=new StringBuffer();
str.append("hello world");
str.deleteCharAt(8);
str.delete(1, 5);
System.out.println(str.toString());
}
}
结果
h wold
StringBuffer的常用方法:
方法名 | 说明 |
---|---|
reverse() | 将整个字符串反转 如"hello world"变成”dlrow olleh“ |
length() | 返回字符串的长度 |
indexOf() | 返回指定字符串的索引值 |
insert() | 在指定的索引值下插入 |
replace() | 将目标字符串中指定范围类的字符串替换成新字符串 |
substring() | 返回目标字符串的子字符串 |
StringBuilder类创建字符串
- StringBuilder类和StringBuffer类一样,都也需要创建,方法名相同。
- 也是一个线程不安全的字符序列。
StringBuffer和StringBuilder类的区别
- String类也是字符串类,但与StringBuffer和StringBuilder类大不相同,StringBuffer和StringBuilder类是可变的,String是不可变的,并且在操作字符串的时候,大部分都是String类型的,还需StringBuffer和StringBuilder类型转换String类型才可行。
- StringBuffer、StringBuilder、String 中都实现了 CharSequence 接口。
- StringBuffer线程安全,但执行速度慢,StringBuilder线程不安全,但执行速度快。
- 在一些情况下,不要一味追求速度快或者线程安全等问题,在开发中,两者可以合并一起用,达到最好条件。