• String StringBuffer StringBuilder区别与联系


    java.lang.String、java.lang.StringBuffer、java.lang.StringBuilder都是字符串类型,是Java中用于处理字符串常用的三个类。它们主要有以下区别和联系:

    联系(相同之处):

    三者都是final类,不允许被继承。

    由于使用频繁,考虑到性能和安全的原因,防止其中的参数被参数修改影响到其他的应用。

    区别

    1)String类是不可变

    String对象一旦被创建,则包含在这个对象中的字符序列是不可更改的,直到这个对象被销毁。

    String实现了三个接口:java.io.Serializable、Comparable<String>、CharSequence

    2)StringBuffer类代表一个字符序列可变的字符串

    StringBuilder可以通过append、insert、reserve、setCharAt、setLength等方法改变其内容。一旦生成了最终的字符串,调用toString方法将其转变为String类型。

    3)JDK1.5新增了一个StringBuilder类,与StringBuilder类似,构造方法和方法基本相同。

    不同的是StringBuffer是线程安全的,可以不需要额外的同步用于多线程中;StringBuilder是线程不安全的,运行于多线程中就需要使用单独同步处理,但速度比不上StringBuilder,所以StringBuilder性能略高。在不考虑线程安全的情况下,优先考虑使用StringBuilder。

    StringBuilder只实现了两个接口java.io.Serializable、CharSequence,相比之下String的实例可以通过compareTo方法进行比较,其他不可以。

    三者的运行速度:StringBuilder > StringBuffer > String。

    小结

    1)String:适用于少量的字符串操作的情况。

    2)StringBuffer:适用于单线程下在字符缓冲区进行大量操作的情况。

    3)StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况。

  • 相关阅读:
    JS中的constructor、prototype、__proto__的要点理解
    call、apply、bind的源码模拟
    js中的继承方式
    IPV6
    java8 instant localDateTime
    FileInputFormat 的实现之TextInputFormat
    Git服务器,仓库的hook监控
    Linux 开机启动图形界面,shell界面
    java操作Hbase
    Linux 下安装 storm
  • 原文地址:https://www.cnblogs.com/sinoaccer/p/12026868.html
Copyright © 2020-2023  润新知