StringBuilder类型方法及其扩容方式

本文详细介绍了StringBuilder的构造方法,包括无参、指定容量和初始化字符串的实例,以及获取长度的方式。此外,还涵盖了StringBuilder的常用增删改查方法,如append、insert、delete、replace和reverse,以及其自动扩容机制的原理。
摘要由CSDN通过智能技术生成

1、StringBuilder构造方式

1、StringBuilder() :
 创建一个初始值为空的字符串对象,数组长度为0,容器大小为16
 无参构造 new StringBuilder()
StringBuilder sb = new StringBuilder();
//StringBuilder 重写了toString方法
System.out.println(sb);


2、StringBuilder(int c) :
 创建一个初始值为空的字符串对象,数组长度(字符个数)为0,容器大小为int c
new StringBuilder(int capacity)
StringBuilder sb2 = new StringBuilder(20);

3、StringBuilder(String str) :
 创建一个初始值为str的字符串对象,数组长度(字符个数)为str.length,容器大小为16+str.length
new StringBuilder(String str)
StringBuilder sb1 = new StringBuilder("abc");
System.out.println(sb1);//abc


2、StringBuilder获取长度的方法

StringBuilder对象中维护的是一个字符数组,所以可以获取字符数组的长度和元素的个数。
(1)capacity() :返回对象的初始容量       capacity() 获取StringBuilder容器的大小

(2)length():返回字符串对象长度        length() 获取StringBuilder元素的个数

StringBuilder stringBuilder = new StringBuilder("abcdefg");
//字符串长度是7  "abcdefg"是存在的  
System.out.println(stringBuilder.length());//7
//capacity指的是容器大小  默认是16 又传入了字符串  是16+str.length
System.out.println(stringBuilder.capacity());//16 + 7

StringBuilder stringBuilder1 = new StringBuilder();
System.out.println(stringBuilder1.length());//0
System.out.println(stringBuilder1.capacity());//16

StringBuilder stringBuilder2 = new StringBuilder(30);
System.out.println(stringBuilder2.length());//0
System.out.println(stringBuilder2.capacity());//30

3、StringBuilder类型中常用的方法

1、增加方法:


append(int i) :在字符串基础上追加数据,可以加任何类型的数据

insert(int offset, char c) :在指定索引添加数据
添加的索引范围:0----length

 StringBuilder sb = new StringBuilder("abcd");
 sb.insert(0,"张三");
 System.out.println(sb);//张三abcd
 sb.insert(2,"李四");
 System.out.println(sb);//张三李四abcd
 sb.insert(sb.length(),"王五");
 //索引范围 0-sb.length()
 System.out.println(sb);//张三李四abcd王五
2、删除方法:


delete(int start, int end) :删除从start开始到end-1结束的字符

sb = new StringBuilder("abcdefgabc");
//把defg删除掉
sb.delete(3,7);


deleteCharAt(int index) :删除指定索引位置上的字符

System.out.println(sb);//abcabc
//删除指定索引的元素
sb.deleteCharAt(0);
System.out.println(sb);//bcabc
3、替换方法:


replace(int start, int end, String str) :将指定索引范围的字符换成新的字符串(包含头不包含尾)

//替换replace(int start,int end,String str)
sb = new StringBuilder("ilovejavaandmysql");
sb.replace(12,sb.length(),"java");
System.out.println(sb);//ilovejavaandjava
4、反转方法:


reverse() :将字符串在本身的基础进行反转

String str = "abcdefg";
System.out.println(new StringBuilder(str).reverse().toString());

4、StringBuilder的扩容机制(重点)

如果对象中维护的数组容量不够存储,就自动扩容数组
扩容方式:
先进行一个预扩容:原有的长度*2 + 2
如果能存储,就使用有的长度*2 + 2作为容器大小
如果不能存储,元素的长度作为容器的大小

//容器默认大小是16
StringBuilder sb = new StringBuilder();
//添加15个元素  
sb.append("abcdefgabcdefga");
//默认大小为16 能够存 容器大小还是16
Sstem.out.println(sb1.capacity());//16
又添加了4个 此处是15+4=19个 
sb.append("abaa");
//容器大小不够存储 扩容 原来容器大小 * 2 + 2=34个
System.out.println(sb.capacity());//34


StringBuilder sb1 = new StringBuilder();
//存入15个
sb1.append("abcdefgabcdefga");
//又存入20个 此处是15+20=35个 扩容一次是16*2+2=34个 
sb1.append("abcdefgabcdefgababaa");
//当扩容一次之后还是不够存入时  容器大小直接变为要存入的元素长度 就是35
System.out.println(sb1.capacity());//35

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值