StringBuffer类和StringBuilder类笔记

本文详细介绍了StringBuffer类的特点和使用方法,对比了String、StringBuilder与StringBuffer的区别,包括它们的构造方法、主要操作如添加、删除、替换、反转及截取等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

StringBuffer类

StringBuffer和String的区别:
String是一个不可变的字符序列
StringBuffer是一个线程安全的可变的字符序列 

StringBuffer的构造方法:
    * public StringBuffer():无参构造方法
    * public StringBuffer(int capacity):指定容量的字符串缓冲区对象
    * public StringBuffer(String str):指定字符串内容的字符串缓冲区对象

StringBuffer的方法:
    * public int capacity():返回当前容量。      理论值
    * public int length():返回长度(字符数)。 实际值

StringBuffer和 StringBuilder的区别:

每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

StringBuffer的添加功能
    public StringBuffer append(String str):
    可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
    public StringBuffer insert(int offset,String str):
    在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

(含头,不含尾)


StringBuffer的删除功能
    public StringBuffer deleteCharAt(int index):
    删除指定位置的字符,并返回本身
    public StringBuffer delete(int start,int end):
    删除从指定位置开始指定位置结束的内容,并返回本身(含头,不含尾)

StringBuffer的替换功能
   public StringBuffer replace(int start,int end,String str):
   从start开始到end用str替换
StringBuffer的反转功能
    public StringBuffer reverse():
    符串反转

StringBuffer的截取功能
    public String substring(int start):
     从指定位置截取到末尾
    public String substring(int start,int end):
     截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
注意事项
返回值类型不再是StringBuffer本身

StringBuffer和String的相互转换

* A:String -- StringBuffer
    * a:通过构造方法
    * b:通过append()方法
* B:StringBuffer -- String
    * a:通过构造方法
    * b:通过toString()方法
    * c:通过subString(0,length);
 

StringBuffer sbBuffer = new StringBuffer("shanzu");
		String string  = new String(sbBuffer);
		System.out.println(string);
		
		String s1=sbBuffer.toString();
		System.out.println(s1);
		
		String s2=sbBuffer.substring(0, sbBuffer.length());
		System.out.println(s2);

StringBuffer和StringBuilder的区别
    * String,StringBuffer,StringBuilder的区别
    * StringBuffer和StringBuilder的区别
    * StringBuffer是jdk1.0版本的,是线程安全的,效率低
    * StringBuilder是jdk1.5版本的,是线程不安全的,效率高

    * String和StringBuffer,StringBuilder的区别
    * String是一个不可变的字符序列
    * StringBuffer,StringBuilder是可变的字符序列


String和StringBuffer分别作为参数传递
形式参数问题
    * String作为参数传递
    * StringBuffer作为参数传递 

基本数据类型的值传递,不改变其值

引用数据类型的值传递,改变其值

String类虽然是引用类型,但是它当作参数传递时和基本数据类型是一样的。

        String s="shanzu";
		System.out.println(s);
		Chang(s);
		System.out.println(s);
		
	}

	public static void Chang(String string) {
		string+="laile";
		
	}

//结果是两次输出皆为shanzu;
//因为s是不变序列,它指向shanzu这个对象
//chang函数执行时,首先传值string = s,此时string指向shanzu对象,当string进行+=操作时,需要重新new一个对象,完成shanzu和laile的拼接,并让string指向shanzulaile。由于string的存活范围只有在chang函数内,所以最后s仍然指向shanzu这个对象。
StringBuffer sb=new StringBuffer();
			sb.append("shanzu");
		System.out.println(sb);
		Chang(sb);
		System.out.println(sb);
		
	}

	public static void Chang(StringBuffer string) {
		string.append("laile");
		
		
	}
//两个引用(sb、string)皆指向同一个对象

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值