13、StringBuffer与StringBuilder

StringBuffer与StringBuilder
一、StringBuffer类
1、StringBuffer类介绍
StringBuffer类(也叫做字符串缓冲区),它的存储容量会随着内容的增加或减少自动的调整。StringBuffer解决了String固定大小和低效的缺点。

2、什么时候使用StringBuffer
如果涉及到大量字符反复连接的时候就适合使用StringBuffer,示例:

 Employee emp = ……;
String sql = "select  *  from  employee where 1=1 ";
if (emp.getEname() != null) {
	sql += "and  ename='jack' ";
}
if (emp.getSal() != null) {
	sql += "and  sal>=3000 ";
}
if (emp.getDeptno() != null) {
	sql += "and  deptno=10";
}

3、StringBuffer构造函数
在这里插入图片描述
4、StringBuffer常用方法
在这里插入图片描述
二、StringBuilder类
1、StringBuilder类介绍
API使用和StringBuffer一样,区别在于使用于单线程环境下。而在多线程环境下,也就是说有多个线程访问同一个StringBuffer那么是安全的,内容不会乱。一般情况下我们会直接使用StringBuffer多点。而StringBuilder在多线程环境下就不安全了。

2、StringBuilder常用方法
1.append( [各种类型] ): 会把数据添到StringBuilder的后面。
2. indexOf(): 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
3. delete(): 将当前字符串中从start(包含)开始到end(不包含)之间的内容移除
4. insert(): 将数据的字符串表示形式插入此序列中。
5. substring(): 取StringBuffer中的子串。
6. reverse(): 将此字符序列用其反转形式取代。

3、示例

public class TestDemoStringBuilder { 
	public static void main(String[] args) {
		StringBuilder strbu = new StringBuilder("qiao");
		//字符串的容量和长度
		System.out.println("长度是:"+strbu.length());//4
		
		//StringBuilder insert(int offset,String str)将str插入到当前字符串中offset指向的位置上;
		System.out.println("插入后新字符串:"+strbu.insert(3,"yes"));
		
		// StringBuilder append(String str) 将str插入到当前字符串的末尾位置;
		System.out.println("插入末尾后的新字符串:"+strbu.append("yueer"));
		
		// StringBuilder delete(int start ,int end)将当前字符串中从start(包含)开始到end(不包含)之间的内容移除;
		System.out.println("删除后的新字符串:"+strbu.delete(2, 3));
		
		// StringBuilder replace(int start , int end , String str) 将当前字符串中start到end之间的内容全部用str的内容替换;
		System.out.println("替换内容后的新字符串:"+strbu.replace(1, 2, "yue"));
		
		// StringBuilder reverse() 实现字符串的反转;
		System.out.println("反转后的新字符串:"+strbu.reverse());
		
		// StringBuilder substring()
		System.out.println("下标2的新字符:"+strbu.substring(2));
		
		// StringBuilder indexOf()从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
		System.out.println("从下标2开始查找的字符“i”出现的位置:"+strbu.indexOf("i",2));
	}    
}

三、StringBuffer 与 StringBuilder 的区别
1、StringBuffer 与 StringBuilder 中的方法和功能完全是等价的。

2、只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。

3、在单线程程序下,StringBuilder效率更快,StringBuilder 相较于 StringBuffer 有速度优势,因为它不需要加锁,不具备多线程安全,而StringBuffer则每次都需要判断锁,效率相对更低。

猜你喜欢

转载自blog.csdn.net/weixin_40574657/article/details/89317256
今日推荐