zoukankan      html  css  js  c++  java
  • StringStringBufferStringBuilder

    String 字符串常量
    StringBuffer 字符串变量(线程安全)
    StringBuilder 字符串变量(非线程安全)

    String是不可变的对象(String类的声明是public final,每次对String更改都会生成一个新的String对象,会对系统性能产生影响)

    StringBuffer:线程安全的可变字符序列,通过某些方法调用可以改变该序列的长度和内容。
    StringBuffer上的主要操作是 append insert 方法,可重载这些方法,以接受任意类型的数据。
        append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的位置添加字符。
          (例如,如果 z 引用一个当前内容是“start”的字符串缓冲区对象,
             则此方法调用 z.append(“le”) 会使字符串缓冲区包含“startle”,
             而 z.insert(4, “ab”) 将更改字符串缓冲区,使之变为“starabtle”。)

    StringBuilder:一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步。
            建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。两者的方法基本相同
     
    使用步骤:
    1、通过用一个重载的构造函数方法初始化变量,可以创建StringBuilder类的新实例,例如
     StringBuilder textStringBuilder = new StringBuilder();

    2、设置容量和长度
     StringBuilder textStringBuilder = new StringBuilder("Hello");     //长度为 5的一个新实例
     或者
    StringBuilder textStringBuilder = new StringBuilder("Hello World",25); //使用重载的构造函数之一来指定 StringBuilder类的容量

    3、append方法:
     将文本或对象的字符串表示形式添加到由当前StringBuilder对象表示的字符串的结尾处。

    4、Insert方法:
     将字符串或对象添加到当前StringBuilder中的指定位置。

    5、remove方法:
     从当前StringBuilder中移除指定数量的字符,移除过程从指定的索引处开始。

    6、replace方法:
     可以用另一个指定的字符来替换StringBuilder对象内容的字符。
     
    区别:
    运行速度快慢为:StringBuilder > StringBuffer > String。
    String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
     
    synchronized关键字是做什么的?
    防止多个线程同时操作同一个对象,防止访问量过大而出错。在多线程中非常常见,根据用法不同,可以给方法、代码块或者对象加锁。
     当多个线程访问加锁的方法时,每次只有一个线程获得锁,其他线程必须等待该线程释放锁(执行完这个方法),
     再由下一个线程获得锁,才允许执行该方法。(加锁会带来性能的损耗,还包括锁等待时的线程阻塞
  • 相关阅读:
    Win32串口API
    Windows核心编程 第4章 进程
    大家都来吐槽下12306的网站bug吧
    HttpRequest模拟Post和Get提交代码
    jquery.masonry + jquery.infinitescroll 实现瀑布流布局
    三层架构之泛型应用
    listView 中,大图标时,各个图标之间间距的控制
    Windows Phone APP的设计过程
    分享三个小故事
    最值得创业者聆听的10大TED演讲(中文字幕视频)
  • 原文地址:https://www.cnblogs.com/wdss/p/10747041.html
Copyright © 2011-2022 走看看