stringBuilder
概述
-
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
-
可变原因,底层的字符数组可以改变指向的地址
-
主要功能:append、insert
都是追加或者中间插入 -
构造方法:
-
stringBuilder();
构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。 -
capacity()
返回当前字符串缓冲区容量。
每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大 -
stringBuilder append(任意数据类型)
接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区的末尾中 -
stringBuilder insert(位置,任意数据类型)
insert 方法则在指定的位置添加字符
(指定的位置最大不能超过当前缓冲区中字符的个数) -
deleteChaeAt(int index)
三处指定索引的字符 -
delete(int start,int end)
删除指定索引的此序列(start ~ end 不包含end)的子字符串中的字符。 -
replace(int start, int end, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。
- StringBuffer reverse()
将此字符序列用其反转形式取代。
和StringBuffer的关系
都是可变的字符序列,都是字符串缓冲区,底层都是字符数组,有相同的方法。
- 不同点:
线程安全:
stringBuffer 是线程安全的(同步)
StringBuilder 是线程不安全的类型(不同步)主要使用的
StringBuilderde效率高
String 和StringBulider作为方法的参数
String 作为方法的实际参数,调用后不会修改原值:
重申一遍:Java中只有传值。
Java中一切都是值传递。你可以通过方法来改变被引用的对象中的属性值,却无法改变这个对象引用本身.也就是当一个对象的实例被创建的时候,like this: Apple a = new Apple(); a 存的就是这个对象实例的地址。而这个地址,即使是a的值作为参数传到某个函数中的时候,a本身也是不会改变的。也就是说传递的是引用的拷贝,即不是引用本身,更不是对象。