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

posted on 2021-10-26 21:04  孤独的亿匹狼  阅读(53)  评论(0)    收藏  举报