Java StringBuffer 和 StringBuilder 类

2 篇文章 0 订阅
1 篇文章 0 订阅

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象

1、初始化

@Test
public void testDemo() {
	StringBuilder sb = new StringBuilder(10);
	sb.append("runoob..");
	System.out.println(sb);         // runoob
	sb.append("!");
	System.out.println(sb);         // runoob..!
	sb.insert(8, "java");
	System.out.println(sb);         // runoob..java!
	// 删除下标之间的数据,前闭后开
	sb.delete(5, 8);
	System.out.println(sb);         // runoojava!

	StringBuilder builder = new StringBuilder("菜鸟教程官网:");
	builder.append("www")
			.append(".runoob")
			.append(".com");
	System.out.println(builder);    // 菜鸟教程官网:www.runoob.com

	StringBuilder reverse = builder.reverse();
	System.out.println(reverse);

	// 使用给定 String 中的字符替换此序列的子字符串中的字符。
	StringBuilder builder1 = new StringBuilder("abcdef");
	StringBuilder replace = builder1.replace(0, 2, "abc");
	System.out.println(replace);        // abccdef
}

在这里插入图片描述

2、StringBuilder常用的方法

@Test
public void test() {
	StringBuilder builder = new StringBuilder("abcdefghi");
	// 返回当前容量
	System.out.println(builder.capacity());     // 25
	char c = builder.charAt(1);                 // b

	// void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin),
	// 将字符从此序列复制到目标字符数组 dst。
	char[] dst = {'h', 'e', 'l', 'l', 'o'};
	builder.getChars(0, 3, dst, 1);
	for (char c1 : dst) System.out.print(c1 + " ");     // h a b c o

	// 返回第一次出现的指定子字符串在该字符串中的索引。
	System.out.println(builder.indexOf("def"));     // 3
	// 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
	System.out.println(builder.indexOf("def", 2));  // 3

	// 返回最右边出现的指定子字符串在此字符串中的索引。
	System.out.println(builder.lastIndexOf("def"));     // 3
	// 返回 String 对象中子字符串最后出现的位置。
	System.out.println(builder.lastIndexOf("def", 2));  // -1

	// 字符数
	System.out.println(builder.length());           // 9

	// 将给定索引处的字符设置为 ch。
	builder.setCharAt(1, 'c');

	// 设置字符序列的长度。
	builder.setLength(10);

	// CharSequence subSequence(int start, int end)
	//  返回一个新的字符序列,该字符序列是此序列的子序列。
	System.out.println(builder.subSequence(0, 3)); // abc

	// 返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
	String substring = builder.substring(0, builder.length());
	System.out.println(substring);      // accdefghi

	// 返回此序列中数据的字符串表示形式。
	System.out.println(builder.toString()); // accdefghi
}

3、StringBuilder 和 String 之间的转化

@Test
public void convert() {
	String str = new String("abc");
	StringBuilder builder = new StringBuilder(str);
	StringBuilder sb = builder.append("abc");
	System.out.println(sb);

	String s = sb.toString();
	System.out.println(s);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值