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


    1. String : 字符串常量,它们的值在创建之后不能更改。代表字符串,Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
       
      String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。
      String a = “a”; //假设a指向地址0x0001
      a = “b”;//重新赋值后a指向地址0x0002,但0x0001地址中保存的”a”依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。
      因此String的操作都是改变赋值地址而不是改变值操作。

    例如:

     String str = "abc";
    

    等效于:

     char data[] = {'a', 'b', 'c'};
    
     String str = new String(data);
    

    2.
    StringBuffer是可变类。
    和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

    StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
    StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
    StringBuffer buf=new StringBuffer(“this is a test”)//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。

    3.
    StringBuilder:可变的字符序列 字符串变量(非线程安全)
    StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类。
    如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
    常用方法:
    SreingBuilder append(参数)—-追加内容到当前StringBuilder对象的末尾

    StringBuilder insert(位置,参数)—-将内容插入到StringBuilder对象指定的位置

    String toString—-将StringBuilder对象转换为String对象

    int length()—-获取字符串长度
    4.
    线程安全
    StringBuffer 线程安全
    StringBuilder 线程不安全

    5.
    速度
    一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的。

    6.
    总结
    (1).如果要操作少量的数据用 = String
    (2).单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
    (3).多线程操作字符串缓冲区 下操作大量数据 = StringBuffe

  • 相关阅读:
    高级(线性)素数筛
    Dijkstra(迪杰斯特拉)算法
    简单素数筛
    【解题报告】 POJ1958 奇怪的汉诺塔(Strange Tower of Hanoi)
    4 jQuery Chatting Plugins | jQuery UI Chatbox Plugin Examples Like Facebook, Gmail
    Web User Control Collection data is not storing
    How to turn on IE9 Compatibility View programmatically in Javascript
    从Javascrip 脚本中执行.exe 文件
    HtmlEditorExtender Ajax
    GRIDVIEW模板中查找控件的方式JAVASCRIPT
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10454058.html
Copyright © 2011-2022 走看看