Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder
相同点:
1.Java的核心类,String位于java.lang包中
1.都可以储存和操作字符串,同时三者都使用final修饰,都属于终结类不能派生子类,都是final类,不允许被继承,操作的相关方法也类似例如获取字符串长度等;
2.底层都是一个字符数组,都实现了接口charquence,都是字符串相关类;
String与StringBuilder
不同点
1.String:不可变字符序列,值在创建后不能被更改,但可以被共享;
StringBuilder和StringBuffer是可变字符序列
2.StringBuilder底层其实是一个长度可以动态增长的字符数组char[],默认长度是16,每次增长2倍,减少扩容的次数;
String底层的数组引用变量是final的,一旦指定了一个字符数组,不能再改变指向。如果要进行字符串的拼接,需要生成新的字符串,效率低下;
StringBuilder和StringBuffer的区别和联系
联系:都是字符串相关类,都实现了CharSequence接口,底层都是一个char[]
区别:StringBuffer:线程安全的,可变的字符序列,效率低
StringBuilder:线程不安全的,可变的字符序列 jdk1.5开始,效率高的不安全指的是数据的不确定性;