字符串缓冲类

字符串是常量,从内存分析角度来说,我们就可以知道,不能被轻易改变

类似于上面的情况,这种情况他就会马上创建一个新对象。,但是我们是对原字符串进行一些合理的操作,也就是说给人的一种感觉

注意: 字符串的内容不适宜频繁修改,因 为一旦修改马上就会创建一个新的对象。

 如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer)。

StringBuffer其实就是一个存储字符的容器

容器:具备增删该查判断的功能。

上面字符可以完全存储,上面说了无参初始容量为16个字符,但是上面还是可以把所有java全部展现出来。

笔试题目:使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?

StringBuffer 底层是依赖了一个字符数组才能存储字符数据 的,该字符串数组默认 的初始容量是16, 如果字符数组的长度不够使用 时自动增长1倍。

怎么去看增长的源代码,在不断添加数据时,数据才会增长。

内部调用一个函数来判断数据是否增长

什么情况下会把长度进行增长:

上面minimumCapacity就是我们添加的字符串长度,判断一下添加字符串长度与字符数组长度的大小,打了,就增加

如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer)。

StringBuffer 其实就是一个存储字符 的容器。

笔试题目:使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?

StringBuffer 底层是依赖了一个字符数组才能存储字符数据 的,该字符串数组默认 的初始容量是16, 如果字符数组的长度不够使用 ,就自动增长1倍。

容器的具备 的行为

String

增加

append(boolean b)    可以添加任意类型 的数据到容器中

insert(int offset, boolean b)  指定插入的索引值,插入对应 的内容。

删除

delete(int start, int end)  根据指定的开始与结束的索引值删除对应的内容。

deleteCharAt(int index)   根据指定 的索引值删除一个字符。

 

修改

replace(int start, int end, String str) 根据指定 的开始与结束索引值替代成指定的内容。

reverse()   翻转字符串缓冲类的内容。  abc--->cba

 

        setCharAt(int index, char ch)  把指定索引值的字符替换指定的字符。

        substring(int start, int end)  根据指定的索引值截取子串。

ensureCapacity(int minimumCapacity)  指定StringBuffer内部的字符数组长度的。

查看

indexOf(String str, int fromIndex) 查找指定的字符串第一次出现的索引值,并且指定开始查找的位置。

lastIndexOf(String str)

capacity() 查看当前字符数组的长度。

length()

charAt(int index)

toString()   把字符串缓冲类的内容转成字符串返回。

 

StringBuffer 与 StringBuilder的相同处与不同处:

相同点:

1. 两个类都是字符串缓冲类。

2. 两个类的方法都是一致的。

不同点:

1. StringBuffer是线程安全的,操作效率低 ,StringBuilder是线程非安全的,操作效率高。

2. StringBuffer是jdk1.0出现 的,StringBuilder 是jdk1.5的时候出现的。

推荐使用: StringBuilder,因为操作效率高。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值