zoukankan      html  css  js  c++  java
  • Java中String、StringBuffer和StringBuilder之间的区别

    String在Java中是字符串常量

    例如

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

    结果将是abc1

    在Java中String是一个字符串常量,str+1执行时Java创建一个新的String对象,将拼合后的字符串内容复制一次到新的String对象中,旧的String对象被标记为GC回收机制的待处理对象

    而StringBuffer和StringBuilder在一个对象上进行操作,不会产生对象回收的问题

    执行字符串加法时的速度比append快的原因

    在Java中,预编译的时候,char数组的+不重载String的加号,而是重载Java解释器中代码层面的拼合

    “A Simple" + "Java" + "Test Code"

    会被直接处理为

    ”A Simple Java Test Code"

    导致纯字符串的加法比append函数速度快

    但是如果执行

    String str1 = "A Simple ";
    String str2 = "Java ";
    String str3 = "Test Code";
    String str = str1 + str2 + str3;

    则加号直接重载String的append成员函数,String的速度将低于StringBuffer 和StringBuilder

    StringBuilder和StringBuffer

    StringBuilder是非线程安全的

    StringBuffer是线程安全的,JVM保证StringBuffer多线程安全操作

  • 相关阅读:
    视音频开发测试文件下载
    H.264 中的Annex B格式和AVCC格式
    FFmpeg——命令笔记
    Gamma 矫正
    头文件 <string.h> <cstring> <string> 区别
    Serializable
    Oracle学习
    JDBC
    Servlet为主理解cookie,session,filter
    javaweb复习-环境篇
  • 原文地址:https://www.cnblogs.com/liutianchen/p/7439835.html
Copyright © 2011-2022 走看看