zoukankan      html  css  js  c++  java
  • String、StringBuffer和StringBuilder比较

    从执行速度效率来说:

      String为字符串常量,一旦创建就不能修改,第一次创建一个String对象,实例化后有初始值;当第二次创建String对象后,再次赋值,表面上看是改变了第一个String对象的初始值,其实并不是,第二次创建后,第一个对象则被JVM的GC回收,因为String为常量,一旦创建则不可更改,所有创建第二个对象时,第一个对象被回收,所以使用String创建字符串对象是一个不断回收对象并且创建新对象的过程,所以执行速度很慢。

      StringBuffer和StringBuilder都为字符串变量,创建以后,仍然可以发生更改,而不再像String那样创建再回收,所以执行时间较短,效率较高。

    从线程安全来说:

      StringBuffer是线程安全的可变字符序列,类似于String的字符串缓冲区,在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区用于多个线程,并且是安全的。其主要方法为append 和 insert 方法,append方法主要是将新加的字符加入缓冲区的末端,但是insert方法可以将新加字符加入指定位置,在多线程情况下,可用此来创建字符串对象。

      StringBuilder是非线程安全的可变字符序列,jdk1.5后加入,其api与StringBuffer兼容,但不保证同步,用在字符串缓冲区被单个线程使用的时候,所以在单线程情况下优先采用该方法创建字符串对象,其执行效率比StringBuffer要高。

  • 相关阅读:
    树莓派配置Jdk环境并设置开机启动jar
    缓存架构之路(一)缓存概述及应用
    并发编程学习历程(零)JMM内存模型
    并发编程学习历程(一)Synchronized
    深入Disruptor源码分析(一)入门指南
    JAVA Synchronized和Lock实现原理
    Vscode断点调试PHP
    php环境搭建
    github使用总结
    面试笔记
  • 原文地址:https://www.cnblogs.com/wuhao-0206/p/12629610.html
Copyright © 2011-2022 走看看