String 字符串是一个常量,他的值在创建后就不能被改变。因为底层定义的时候String是被final修饰了。
String 很浪费内存空间,效率低,比如:
String s = ‘a’+‘b’+‘c’ = ‘abc’
然而内存中实际产生了5个字符串:
‘a’ ‘b’ ‘c’ 3个
‘a’+‘b’ =‘ab’ 1个
‘ab’+‘c’=‘abc’ 1个
解决这一个问题就是使用StringBuilder 类 (字符串缓冲区)
以后看见‘区’这个字,就知道相关类是提高效率的。
StringBuilder 类可以看成是一个可以变化的字符串,它的底层没有被final修饰。StringBuilder可以看成是一个有长度的数组,数组的长度为16,若数组长度超过16,则会自动扩容成32.
0 | “a” |
---|---|
1 | “b” |
2 | “c” |
3 |
以上表格(数组)就是string builer的一个实际情况
使用StringBuilder 类
第一个bu1仅仅是创建了,相当于一个新的空的数组,它里面什么都没有
第二个bu2创建了,并且传了字符串进去,所以bu2能够显示abc
也就是说使用StringBuilder的时候,要把具体的字符串传给 StringBuilder
StringBuilder 类中的append方法
StringBuilder append(…)添加任意类型的字符串,并返回当前对象自身
StringBuilder 类中的toString方法
StringBuilder toString(…)将StringBuilder对象转换成String对象