栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

String、StringBuilder和StringBuffer的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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:采用变长数组存储的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709572.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号