1、String、StringBuffer 和 StringBuilder 的区别是什么?
String是只读字符串,它并不是基本数据类型,而是一个对象。
从底层源码来看是一个final类型的字符数组,所引用的字符串不能被改变,一经定义,无法再增删改。
每次对String的操作都会生成新的String对象。
private final char value[];
每次+操作:隐式在堆上new一个跟原字符串相同的StringBuilder对象,再调用append方法拼接+后面的字符。
StringBuffer与StringBuilder都继承了AbstractStringBulder类,
而AbtractStringBuilder又实现了CharSequence接口,两个类都是用来进行字符串操作的。
在做字符串拼接修改删除替换时,效率比string更高。
StringBuffer是线程安全的,Stringbuilder是非线程安全的。
所以Stringbuilder比stringbuffer效率更高,StringBuffffer的方法大多都加了synchronized关键字
2、String str="aaa",与String str=new String("aaa")一样吗?
文章评论