String、StringBuilder和StringBuffer的区别

在java的学习中对于String、StringBuider和StringBuffer在编程中是我们经常会用到的字符串类,那么我们熟知他们的特点吗?经过我的理解和学习,下面我来总结一下他们的特点吧。

1、String类特点

(1)String类是被final修饰的;

(2)它的内部原理是:char[];

(3)由于它是被final所修饰的,所以我们可以知道它是采用定长数组存储数据的;

private final char[] values;

(4)满足javabean规范;

        那么可为javabean规范呢?下面我来给大家介绍一下:

                1)有包名;

                2)提供无参构造方法;

                3)提供getter/setter方法;

                4)重写equals()、hashcode()、toString()方法;

                5)实现序列化接口;

(5)字符串字面量可以直接复制给引用;

        例:String  str  =  "abc";      <=>   String  str  = new  String("abc");

(6)字符串字面量相同可以被优化,只会保存一个对象在常量池中;

        例:String  str  =  "This" + "is" + "a test";

        实际上它就是:

                String  str  =  "This  is  a  test";

(7)该类的API方法所有返回值类型为String,除了toString()外,其他所有的方法都会创建一个新的String对象;

2、StringBuilder和StringBuffer的特点

(1)都是被final修饰的类,不能被继承;

(2)StringBuilder和StringBuffer都是动态字符序列,采用动态扩展算法(扩容、拷贝)来实现动态存储数据方式完成字符串的动态存储,即他们是采用变长数组存储的;

(3)内部原理都是char[];

(4)StringBuilder和StringBuffer的内存对象是可变的,说明他们是一个可变字符序列;

3、StringBuilder和StringBuffer的关系

        相同点:1)都是char[]数组 ,采用可变的字符序列;

                      2)API大致相同;

        不同点:StringBuilder    java5.0引入的   非线程安全的     速度快

                       StringBuffer     java早期引入的    线程安全的      速度慢

注意:如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。

4、String、StringBuilder和StringBuffer之间的关系

        String:采用定长数组存储的

        StringBuilder和StringBuffer:采用变长数组存储的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值