1.String和StringBuilder以及StringBuffer的区别(建议使用StringBuilder)
Sting是不可变的,每次内容改变都会在内存中创建新的对象
StringBuffer和StringBuilder都表示可变的字符串,功能方法都是相同的.
唯一的区别:StringBuffer: StringBuffer中的方法都使用了synchronized修饰符,表示同步的,在多线程并发的时候可以保证线程安全,保证线程安全的 时候,性能(速度)较低.
StringBuilder:StringBuilder中的方法都没有使用了synchronized修饰符,不安全,但是性能较高.
使用StringBuilder无参数的构造器,在底层创建了一个长度为16的char数组:
char[] value = new char[16];
此时该数组只能存储16个字符,如果超过了,得自动扩容.自动扩容(创建长度更大的数组,再把之前的数组拷贝到新数组)此时性能极低,一般的,我们事先知道大概需要存储多少字符,在构造器中就应该设置.
//创建一个长度为80的char数组.
new StringBuilder(80);
-----------------------------------------------------
常用方法:
append(Object val):表示追加任意类型数据
StringBuilder deleteCharAt(int index) :删除字符串中,指定位置的字符
public class StringBufferDemo {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder(80);
sb.append("a").append("bcd").append(100);
System.out.println(sb);
}
}