zoukankan      html  css  js  c++  java
  • String、StringBuilder、StringBuffer的区别

    1.在执行速度方面: StringBuilder > StringBuffer > String

    String最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。

    用String+的方式,每循环一次,就会重新new一个StringBuffer对象,这样的内存消耗完全是不必要的

    String str="abc";
    System.out.println(str);
    str=str+"de";
    System.out.println(str);

     输出为"abc"和"abcde",从结果上看str变量的值被改变了,而实际上第一行创建一个String变量str,并赋值为"abc",到第三行时实则是又创建了一个String变量str,并将以前的str的值上加上"de",而之前的str将被JVM的GC垃圾回收器回收,所以,Java中对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。

    2.从线程安全方面: StringBuilder是线程不安全的,而StringBuffer是线程安全的

    总结:

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

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

    StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

  • 相关阅读:
    Makefile:2:*** missing separator. Stop.
    Code笔记之:对使用zend加密后的php文件进行解密
    Apache 访问控制
    leetcode-21-合并两个有序链表
    tcp四次挥手的过程
    实现一个LRU算法
    redis为什么快
    二月春日
    你的支持会鼓励我更积极地创作
    静夜思·静夜祈愿
  • 原文地址:https://www.cnblogs.com/goodbye-lazy/p/10194822.html
Copyright © 2011-2022 走看看