zoukankan      html  css  js  c++  java
  • string,stringbuilder,stringbuffer用法

    总结:
    1.如果要操作少量的数据用 = String   ==================================>字符串常量
    2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder =====================>线程安全
    3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer ======================>非线程安全

    String 类型的性能:

    在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。

    StringBuilder 与 StringBuffer性能比较:

    在for循环遍历的时候,或者频繁访问数据库的时候,或者要考虑多线程(同步)的时候,或者高并发的时候就得思考用哪个了;

    在执行速度方面的比较:StringBuilder >  StringBuffer

    StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。

    StringBuffer很多方法都是synchronized方法, 支持并发操作,线性安全的,适 合多线程中使用。

     接下来从底层源码来分析builder和buffer区别:

    注:

    多线程的情况下才需要考虑线程安全问题。比如一个 StringBuilder ,可能被多个线程访问,那么如果没有 synchronized 的话,第一个线程改变了其值,之后又有第二个线程改变了它的值。当切换回第一个线程时,读到的就是第二个线程修改后的值了。
    如果不考虑多线程, StringBuilder 比StringBuffer要快。

    over...

    ctgu_czy
  • 相关阅读:
    idea最新注册码
    pycharm中可以运行脚本(只在控制台运行,Debugger不运行,设置的断点没用)但是不能debug脚本
    VSCode 云同步扩展设置 Settings Sync 插件
    gist.github.com 无法访问解决办法,亲测永远有效!
    C# HttpWebRequest httpclient
    C# 图片处理
    powerdesigner逆向工程生成PDM时的列注释
    Ocelot网关治理
    Consul服务注册与发现
    CentOS 使用DVD1_DVD2作为本地离线的更新源
  • 原文地址:https://www.cnblogs.com/chenzeyong/p/6182973.html
Copyright © 2011-2022 走看看