zoukankan      html  css  js  c++  java
  • String、StringBuffer和StringBuilder的区别及应用场景

    1. 运行速度:StringBulider>StringBuffer>String

                           String:字符串常量

                           StringBuffer、StringBulider:字符串变量

     String为什么运行行慢呢?

                           创建String对象后,不能再改变;而StringBuffer和StrignBulider创建对象后,还可以改变(每次改变String的值,都要新创建一个对象,再将引用                           指向该对象,浪费内存空间,内存中的无用引用多了以后,jvm的GC就开始工作,系统就会慢了)。

     2.线程安全:StringBuffer是线程安全的,因为StringBuffer的很多方法中都可以使用Sychronized关键字,可保证线程安全,而StringBulider的方法中没有该关键字,不能保证线程安全。

     3.适用场景:String:适用于少量字符串操作情况。

                          StringBulider:适用于单线程在字符串缓存区进行大量操作。

                          StringBuffer:适用于多线程在字符串缓存区进行大量操作。

     4.举个例子:

    String:每次改变String的值,都要新创建一个对象,再将引用指向该对象,浪费内存空间,内存中的无用引用多了以后,jvm的GC就开始工作,系统就会慢了。

    StringBuffer:StringBuffer每次都是对对象本身进行操作,而有种特殊情况String要比StringBuffer快:

          String s="This"+"is a pen";

          StringBuffer sb=new StringBuffer("This").append("is a pen");

        创建上面这两个的速度其实都差不多,但是下面这种就能体现出StrignBuffer的优势了

          String s1="This";

          String s2="is a pen";

          String s3=s1+s2;

    那么重点来了:具体使用场景,我找到了一个很有用的:https://www.zhihu.com/question/20101840

  • 相关阅读:
    Unique path
    *Jump Game
    Valid Palindrome
    *Reverse Words in a String
    Min Stack
    [?]*Simplify Path
    *Valid Parentheses
    *Sqrt(x)
    String to Integer (atoi)
    Add Digits
  • 原文地址:https://www.cnblogs.com/zhaomin08240115/p/9257034.html
Copyright © 2011-2022 走看看