• 技术文章 >Java >java教程

    String、StringBuffer、StringBulider三者介绍

    零下一度零下一度2017-06-23 09:32:29原创897

    三者都实现了CharSequence接口,因此CharSequence可认为是一个字符串的协议接口

    1.String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁;

    我们常常定义的时候 String str=new String("定义了我");

    str=“改变了我”;

    输出是改变了我,好像是Str已经改变了,其实是改变了str的指向,原来堆内存里的对象成为了垃圾

    2.StringBuffer类

    StringBuffer代表一个字符序列可变的字符串,当一个StringBuffer建立以后,通过inser()、appen()、reverse()、serChaAt()、setLength()方法可以改变这个字符串,最终生成以后,可以通过toString()方法转换为一个String对象

    3.StringBuilder是JDK1.5新增的,也代表字符串对象,和StringBuffer相似,两个类的构造器和方法也基本相同,当时StringBuffer是线程安全的,StringBulider没有实现线程安全,所以性能略高。因此,如果创建一个字符可变的字符串对象,则应该优先考虑StringBuilder类

    比较

    1.执行速度方面三者有如下关系:
    StringBuilder>StringBuffer>String;

    2.:一、长度都是可扩充的;二、StringBuffer是线程安全的,StringBuilder是线程不安全的。那么他们的长度是如何实现动态扩充以及StringBuffer的线程安全是如何实现的呢?

    三者都实现了CharSequence接口,因此CharSequence可认为是一个字符串的协议接口

    StringBuffer里面所有的方法除了构造方法以外都由synchronized限定

    它们两个可扩展长度则是通过ensureCapacity(int minimumCapacity)来验证当前长度是否小于参数minimumCapacity,如果成立则进行分配空间。分配新空间的步长为(当前长度+1)的两倍。

    以上就是String、StringBuffer、StringBulider三者介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:设计模式之创建者模式详解 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 一起来分析java设计模式之单例• 一文搞懂Java线程池实现原理• Java数据结构之单链表与OJ题• 详细介绍Java中的线程中断• 详细介绍Java正则表达式之单字符匹配和预定义字符
    1/1

    PHP中文网