zoukankan      html  css  js  c++  java
  • java中String&StringBuffer&StringBuilder

    1.

    String,字符串常量

    StringBuffer,字符串变量(线程安全)

    StringBuilder,字符串变量(非线程安全)

    2.String and StringBuffer

      String和StringBuffe的主要区别在于String是不可变对象,每次对String进行改变的时候其实 等于生成了一个新的String对象,因此经常改变内容的字符串不要使用String类型,因为每次形成新的对象都会对系统的性能产生影响,特别当内存中的无引用的对象多了之后,JVM的GC就会开始工作,那速度一定会相当慢的.

      StringBuffer每次的操作都是针对自身来进行操作,而不是形成新的对象,再改变对象的引用,所以在一般情况下推荐使用StringBuffer,特别是字符串对象经常改变的情况下.而在某些特别的情况下,String对象的字符串拼接其实是被解释成了StringBuffer对象的拼接,所以这些时候String对象的速度并不比StringBuffer慢,而特别是以下字符串对象的形成过程中,String的效率是要比StringBuffer快的:

    String s1 = 'This is only a' + 'simple' + 'test';

    StringBuffer buffer = new StringBuffer('this is only a').append('simple').append('test');

    因为在JVM眼中,String s1 = 'This is only a' + 'simple' + 'test' ,其实就是String s1 = 'This is only a simple test';

    但如果是这样的话:
    String s2 = 'This is only a';

    String s3 = 'simple';

    String s4 = 'test';

    String s1 = s2+s3+s4;

    这个时候JVM就会按照原来的方式去做,

    在大部分情况下:StringBuffer>String

    3.StringBuffer

      java.lang.StringBuffer线程安全的可变字符序列,一个类似于String的字符串缓冲区,但不能修改.虽然在任意时间点上它都包含某种特定的字符序列,但通过某种方法调用可以改变该序列的长度和内容.

      可将字符串缓冲区安全的用于多个线程.可以在必要的时候对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与调用该方法的线程的执行顺序一致.

      StringBuffer上的主要操作时append和insert操作,可重载这些方法,以接受任意的数据类型,每个方法都能有效的将给定的数据转换为字符串,然后将该字符串追加或者插入到字符缓冲区中去

    4.StringBuilder

      java.lang.StringBuilder线程非安全的可变字符串序列,是5.0新增的.此类提供一个与StringBuffer兼容的API,但不保证同步 .该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候,如果可能,简易优先采用该类,因为在大多数时候,StringBuilder要比StringBuffer要快,两者的方法基本相同.

    5\

  • 相关阅读:
    从输入url到页面加载完成都发生了什么?
    JS 获取和监听屏幕方向变化(portrait / landscape)
    圣杯布局的几种情况
    闭包的使用 — 点击列表项输出项目索引
    论文笔记:dropout
    论文笔记:蒸馏网络(Distilling the Knowledge in Neural Network)
    ng-深度学习-课程笔记-17: 序列模型和注意力机制(Week3)
    ng-深度学习-课程笔记-16: 自然语言处理与词嵌入(Week2)
    ng-深度学习-课程笔记-15: 循环序列模型(Week1)
    Ubuntu安装dlib后import出现libstdc++.so.6: version `GLIBCXX_3.4.21' not found
  • 原文地址:https://www.cnblogs.com/wwdxf/p/6432187.html
Copyright © 2011-2022 走看看