zoukankan      html  css  js  c++  java
  • 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:适用于单线程下在字符缓冲区进行大量操作的情况。

  • 相关阅读:
    Prometheus实现微信邮件钉钉报警
    产品需求文档和原型
    各类数据集
    redis与mysql数据同步
    hadoop hbase hive spark对应版本
    Redis集群的搭建
    mysql数据库数据与redis同步
    企业级Zabbix监控实战(一)
    mysql实现高可用架构之MHA
    04-爬取单个英雄联盟英雄的符文图片
  • 原文地址:https://www.cnblogs.com/sinoaccer/p/12026868.html
Copyright © 2011-2022 走看看