Java StringBuffer和StringBuilder类

StringBuffer类创建字符串

初始化:

  1. new StringBuffer();创建一个空的字符缓冲区,初始化长度为16个字符容量。
  2. new StringBuffer(int length);创建一个空的字符串缓冲区,初始化长度为length个字符容量。
  3. 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

删除字符

  1. deleteCharAt()方法是通过索引值删除指定的字符。
  2. 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类创建字符串

  1. StringBuilder类和StringBuffer类一样,都也需要创建,方法名相同。
  2. 也是一个线程不安全的字符序列。

StringBuffer和StringBuilder类的区别

  1. String类也是字符串类,但与StringBuffer和StringBuilder类大不相同,StringBuffer和StringBuilder类是可变的,String是不可变的,并且在操作字符串的时候,大部分都是String类型的,还需StringBuffer和StringBuilder类型转换String类型才可行。
  2. StringBuffer、StringBuilder、String 中都实现了 CharSequence 接口。
  3. StringBuffer线程安全,但执行速度慢,StringBuilder线程不安全,但执行速度快。
  4. 在一些情况下,不要一味追求速度快或者线程安全等问题,在开发中,两者可以合并一起用,达到最好条件。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值