StringBuffer类

本文详细介绍了StringBuffer类的基本概念、构造方法及各种操作方法,包括添加、删除、替换、反转等功能,并通过实例展示了如何使用StringBuffer进行字符串操作。

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


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

* StringBuffer是一个可变的字符序列

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

* B:StringBuffer的方法:

* public int capacity():返回当前容量。 理论值(不掌握)
* public int length():返回长度(字符数)。 实际值
private static void Demo1() {
		StringBuffer sb = new StringBuffer();
		System.out.println(sb.length());	//容器中字符个数,实际值
		System.out.println(sb.capacity());	//容器中初始容量,理论值

		StringBuffer sb2 = new StringBuffer(10);
		System.out.println(sb2.length());
		System.out.println(sb2.capacity());//返回10
		
		StringBuffer sb3 = new StringBuffer("haochao");
		System.out.println(sb3.length());	//返回7 实际字符的个数
		System.out.println(sb3.capacity());	//返回23 是字符串的length + 容量
	}

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

* 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

private static void Demo1() {
		//StringBuffer是字符串缓冲区,当new的时候是在堆内存创建了一个对象,底层是一个长度为16的字符 数
				//当调用添加方法时候,不会再重新创建对象,再不断向原缓冲区添加字符
				StringBuffer sb1 = new StringBuffer();
				StringBuffer sb2 = sb1.append(true);
				StringBuffer sb3 = sb1.append(1000);
				StringBuffer sb4 = sb1.append("心烦意乱");
				
				System.out.println(sb1);	//StringBuffer类中重写了toString方法,显示的是对象属性值
				System.out.println(sb2);
				System.out.println(sb3);
				System.out.println(sb4);
	}

private static void Demo2() {
		StringBuffer sb = new StringBuffer("01234");
		sb.insert(3, "心烦意乱");	//在指定位置添加元素,如果没有指定位置的索引就会报索引越界异常
		System.out.println(sb);		//返回012心烦意乱34 所以是在索引3后面 也是就第4索引开始
	}
A:StringBuffer的删除功能
* public StringBuffer deleteCharAt(int index):
* 删除指定位置的字符,并返回本身
* public StringBuffer delete(int start,int end):

* 删除从指定位置开始指定位置结束的内容,并返回本身

private static void Demo2() {
	StringBuffer sb = new StringBuffer("心烦意乱");
	sb.delete(0, 2);			//包含头不包含尾   从索引0开始 到索引2前结束 
	System.out.println(sb);		//返回意乱 
	StringBuffer sb2 = new StringBuffer("心情不好");
	sb.delete(0,sb2.length());
	System.out.println();		//啥也没有  清空缓存区
}
* A:StringBuffer的替换功能
* public StringBuffer replace(int start,int end,String str):
* 从start开始到end用str替换
* B:StringBuffer的反转功能
* public StringBuffer reverse():

* 字符串反转

private static void Demo1() {
		StringBuffer sb1 = new StringBuffer("有点饿");
	
		sb1.replace(0, 2, "非常");//包含头不包含尾
		System.out.println(sb1);//返回非常饿
		sb1.reverse();			//反转
		System.out.println(sb1);//返回饿常非
	}
* A:StringBuffer的截取功能
* public String substring(int start):
* 从指定位置截取到末尾
* public String substring(int start,int end):
* 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
* B:注意事项

* 注意:返回值类型不再是StringBuffer本身

private static void Demo1() {
		/*	* A:StringBuffer的截取功能
			* public String substring(int start):
				* 从指定位置截取到末尾
			* public String substring(int start,int end):
				* 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
			B:注意事项
			* 注意:返回值类型不再是StringBuffer本身*/
			StringBuffer sb1 = new StringBuffer("我爱吃肉");
			String s1 = sb1.substring(2);	//从指定位置开始到结束
			System.out.println(s1);			//返回吃肉
			StringBuffer sb2 = new StringBuffer("抓紧时间开始学习");
			String s2 = sb2.substring(2, 4);	//一样包含头不包含尾
			System.out.println(s2);
			System.out.println(sb1); 			//不改变StringBuffer 结构
	}
常见对象(StringBuffer和String的相互转换)
* A:String -- StringBuffer
* a:通过构造方法
* b:通过append()方法
* B:StringBuffer -- String
* a:通过构造方法
* b:通过toString()方法

* c:通过subString(0,length);

private static void Demo1() {
		StringBuffer sb1 = new StringBuffer("对象");
		System.out.println(sb1); 		//通过构造对象将字符串转换成StringBuffer对象
		
		StringBuffer sb2 = new StringBuffer();
		sb2.append("么有对象");			//通过append方法将字符串转换为StringBuffer对象
		System.out.println(sb2);
	}

private static void Demo2() {
		StringBuffer sb1 = new StringBuffer("吃肉");
		String s1 = new String(sb1);		//通过构造方法把StringBuffer转换成String
		System.out.println(s1);
		
		String s2 = sb1.toString();
		System.out.println(s2);				//通过toString方法 
		System.out.println(s1.toString());
									//包含头,不包含尾
		String s3 = sb1.substring(0,s1.length());	//通过substring 截取方法
		System.out.println(s3);						//注意substring返回的是String字符串不是StringBuffer
	}

小练习


public class Test1_StringBuffer {
	public static void main(String[] args) {
		/*需求:把数组中的数据按照指定个格式拼接成一个字符串
		* 
				举例:
					int[] arr = {1,2,3};	
				输出结果:
					"[1, 2, 3]"
					
				用StringBuffer的功能实现*/
		int[] arr = {1,2,3};			//创建数组
		
		String s1 =arrayToString(arr);	//接收返回的String
		System.out.println(s1);			//打印 返回[1, 2, 3]
		
	}
	
	public static  String arrayToString(int[] arr) {
		//与String 相比更省内存  
		StringBuffer sb1 = new StringBuffer();		//创建字符串缓存区
		sb1.append("[");							//将[添加到缓冲区
		
		for (int i = 0; i < arr.length; i++) {		//遍历数组
			if (i == arr.length-1) {				
				sb1.append(arr[i]).append("]");		//[1, 2, 3]
			}else {
				sb1.append(arr[i]).append(", ");	//[1, 2,		
				}
		}
		
		return sb1.toString();
	}
}

反转字符串

import java.util.Scanner;

public class Test2_StringBuffer {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);		//创建键盘录入对象
		String line = sc.nextLine();				//将键盘录入的对象存到line中
			System.out.println(revString(line));	
	}
	public static String revString(String line) {
		StringBuffer sb1 = new StringBuffer(line);
		sb1.reverse();	//反转StringBuffer
		
		return sb1.toString();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值