StringBuilder
时间:
StringBuilder是什么?
- StringBuilder是一个可变的字符序列。
但StringBuilder在单线程中的性能比StringBuffer高。 - 一般用在字符串缓冲区被单个线程使用的时候。
如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。 - StringBuilder类可以用于在无需创建一个新的字符串对象情况下修改字符串
StringBuilder StringBuffer String 区别
- StringBuilder提供一个与 StringBuffer 兼容的 API,但不保证同步。
- StringBuilder不是线程安全的,而StringBuffer是线程安全的。
- StringBuilder,StringBuffer可以用于在无需创建一个新的字符串对象情况下修改字符串
- String类是字符串常量,是不可更改的常量。
因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String - StringBuffer,StringBuilder是字符串变量,它的对象是可以扩充和修改的。
StringBuilder 的 append 和 insert
- append 方法始终将这些字符添加到生成器的末端;
- insert 方法则在指定的点添加字符
示例:
System.Text.StringBuilder s = new System.Text.StringBuilder();
s.append("start");
//s.insert(4,"le");
s.append("le");
PS:
s.append(“le”) 将使字符串生成器包含“startle”,
而 s.insert(4, “le”) 将更改字符串生成器,使之包含“starlet”。
特殊情况
String 对象的字符串拼接其实是被 JVM 解释成了StringBuffer或StringBuilder对象的拼接 String
效率是远要比 StringBuffer或StringBuilder快。String S1 = “This is only a” + “ simple” + “ test”;
StringBuilder S2 =new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);String s1 = “This is only a” + “ simple” + “test”;
String s2 = “This is only a simple test”;VM会将s1直接视为s2;
- 当然,非字符串拼接StringBuilder比String+String快;
String S2 = “This is only a”;
String S3 = “ simple”;
String S4 = “ test”;
String S1 = S2 +S3 + S4;
StringBuilder s =new StringBuilder();
s.append(“This is only a”);
s.append(“ simple”);
s.append(“ test”);