String对象:
String是一个封装的char[]数组的对象并且字符串不可变
创建对象:String s="abc";
此种创建方式不仅写法简单,而且效率高,字符串存放在堆中的常量池中,如果第一次创建了“abc”会正常放入堆的常量池中,但是第二次创建就会在堆中的常量池中找是否存在"abc"的常量,如果有就直接使用,不在创建
备注:String对象默认重写了toString()方法,hashCode()方法,equals()方法
String/StringBuilder/StringBuffer的区别
1,可变与不可变
String类中使用字符数组保存字符串,底层是数组,一旦创建长度不可变:底层代码定义:private final char[] value
StringBuilder/StringBuffer都是继承AbstractStringBuilder,两种对象的长度是可变的:底层代码定义:char[] value
2,是否线程安全
String中的对象是常量,显然线程安全
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以线程安全
StringBuilder并没有对其方法进行同步锁,非线程安全
最后:如果程序不是多线程StringBuilder效率高于StringBuffer
浙公网安备 33010602011771号