StringBuffer类和StringBuilder类

StringBuffer和StringBuilder具有相同的方法和属性,唯一的区别在于,StringBuffer更安全,StringBuilder更快。

StringBuffer是jdk1.0版本的,是线程安全的,效率低

StringBuilder是jdk1.5版本的,是线程不安全的,效率高

String是一个不可变的字符序列

StringBuffer,StringBuilder是可变的字符序列

默认长度为16,

StringBuffer与String的区别,在于操作字符串的时候,String类型的字符串会重新创建一个新的String来接收,而StringBuffer类型不会重新赋值。

String str = "hello";
String str1 = str.concat("java");
System.out.println(str);//结果为hello,str的值没有被改变
System.out.println(str1);//结果为hellojava,操作值后会被一个新的字符串来接收
		
StringBuffer sbf = new StringBuffer("hello");
StringBuffer sbf1 = sbf.append("java");
System.out.println(sbf);//结果为hellojava,赋值后不用重新创建新的字符串
System.out.println(sbf1);//结果为hellojava

 

append(String str)

可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身

StringBuffer sb = new StringBuffer("abc");
sb.append("123");
System.out.println(sb);//结果为abc123

capacity()

返回StringBuffer的容量,容量和长度是两个概念,比如说:一瓶水的容量是1000毫升,但只装了500毫升的水。这瓶水的容量就是我们所说的字符串缓冲区的容量,500毫升就相当于目前这个字符串缓冲区里面的字符串的长度。

StringBuffer sb = new StringBuffer();
StringBuffer sb1 = new StringBuffer("abcd");
System.out.println(sb.length());//sb的长度是0
System.out.println(sb.capacity());//sb的容器是16
System.out.println(sb1.length());//sb1的长度是4
System.out.println(sb1.capacity());//sb1的容器是20

substring(int start)

从指定位置截取到末尾

substring(int start,int end)

截取从指定位置开始到结束位置,包括开始位置,不包括结束位置

注意:返回值类型将不再是StringBuffer本身,而是String

StringBuffer sb = new StringBuffer("abcde");
String str1 = sb.substring(3);		//返回值类型不再是StringBuffer,而是String
System.out.println(str1);			//结果为de
String str2 = sb.substring(0, 3);
System.out.println(str2);			//结果为abc

delete(int a,int b)

删除下标a到下标b-1的字符(含头不含尾45)

StringBuffer sb = new StringBuffer("0123456");
sb.delete(3, 5);
System.out.println(sb);//结果为01256

deleteCharAt(int index)2145145141

删除指定下标的字符

StringBuffer sb = new StringBuffer("0123456");
sb.deleteCharAt(3);
System.out.println(sb);//结果为012456

insert(int index,String str)

在指定下标处添加字符串,添加的字符串在指定的下标前面

StringBuffer sb = new StringBuffer("abc");
sb.insert(2, "5");
System.out.println(sb);//结果为ab5c

replace(int start,int end,String str)

替换,从start开始到end用str用str替换(含头不含尾)

StringBuffer sb = new StringBuffer("abcde");
sb.replace(0, 3, "123");
System.out.println(sb);					//结果为123de

reverse()

字符串反转

StringBuffer sb = new StringBuffer("123456");
sb.reverse();
System.out.println(sb);//结果为654321

setCharAt(int index,char ch)

在指定的下标处替换字符

StringBuffer sb = new StringBuffer("abcde");
sb.setCharAt(3, '5');
System.out.println(sb);//结果为abc5e

trimToSize()

改变字符串缓冲区的容量。比如说一个1000毫升的瓶子装了100毫升的水,我把这个1000毫升的瓶子换成了300毫升,照样可以装这个100毫升的水。同理,trimToSize()改变的是缓冲区的容量,没有改变长度。

System.out.println(sb.length());//原始长度是5
System.out.println(sb.capacity());//容量是20
sb.trimToSize();//缩小容量
System.out.println(sb.length());//原始长度还是5
System.out.println(sb.capacity());//缩小后的容量变为5

setLength(int len)

改变字符串的长度,如果len大于原始长度,则自动加上空格,如果len小于原始长度,则删除掉多余的长度

StringBuffer sb = new StringBuffer("123456789");
System.out.println(sb.length());//原始长度
sb.setLength(12);//增加字符串的长度
System.out.println(sb);//改变长度后的字符串的值是"123456789   ",后面多余的格是自动加上去的
sb.setLength(6);//减少字符串的长度
System.out.println(sb);//改变长度后的字符串的值是"123456",删除多余的长度

StringBuffer和String的相互转换

String转换成StringBuffer

  • 通过StringBuffer的构造方法

  • 通过append()方法

StringBuffer转换成String

  • 通过String的构造方法

  • 通过toString()方法

  • 通过subString(0,length)方法

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值