zoukankan      html  css  js  c++  java
  • 字符串 —— String?StringBuffer?StringBuilder?

    字符串常用的操作就是拼接,特别是SQL语句的拼接。

    做了个简单的试验,它们之间的差别惊人!

    StringBuffer:

     1     public void testStringBuffer() {
     2         long start = System.currentTimeMillis();
     3         StringBuffer sb = new StringBuffer();
     4         
     5         for (int i = 0; i < COUNT; i++) {
     6             sb.append(STR_INIT);
     7         }
     8         long end = System.currentTimeMillis();
     9         
    10         System.out.println("StringBuffer 耗时:"  + (end - start));
    11     }

    运行结果:基本在50毫秒

    StringBuilder:

     1     public void testStringBuilder() {
     2         long start = System.currentTimeMillis();
     3         StringBuilder sb = new StringBuilder();
     4         
     5         for (int i = 0; i < COUNT; i++) {
     6             sb.append(STR_INIT);
     7         }
     8         long end = System.currentTimeMillis();
     9         
    10         System.out.println("StringBuilder 耗时:"  + (end - start));
    11     }

    运行结果:平均50毫秒,最低30多毫秒,最高90多毫秒

    String:

     1     public void testString() {
     2         long start = System.currentTimeMillis();
     3         String s = "";
     4         
     5         for (int i = 0; i < COUNT; i ++) {
     6             s += STR_INIT;
     7         }
     8         
     9         long end = System.currentTimeMillis();
    10         
    11         System.out.println("Str 耗时:"  + (end - start));
    12     }

    运行结果:2分多钟(是StringBuffer,StringBilder的上千倍

    代码说明:

    for循环的次数(COUNT)为 10000


    StringBuffer和StringBuilder的区别:

    StringBuffer——线程安全的

    StringBuilder——非线程安全

    JDK API建议:如果不涉及线程问题,建议使用StringBuilder

    个人建议:当需要字符串做拼接时,使用StringBuilder吧!


    UPDATE:2016-5-23

    重新学习发现内存也是可以计算的。

    内存的差别倒是不大,跟时间比起来,可以忽略不计了。

    详细代码请参考:Github

  • 相关阅读:
    LeetCode OJ 112. Path Sum
    LeetCode OJ 226. Invert Binary Tree
    LeetCode OJ 100. Same Tree
    LeetCode OJ 104. Maximum Depth of Binary Tree
    LeetCode OJ 111. Minimum Depth of Binary Tree
    LeetCode OJ 110. Balanced Binary Tree
    apache-jmeter-3.1的简单压力测试使用方法(下载和安装)
    JMeter入门教程
    CentOS6(CentOS7)设置静态IP 并且 能够上网
    分享好文:分享我在阿里8年,是如何一步一步走向架构师的
  • 原文地址:https://www.cnblogs.com/memory4young/p/java-string-stringbuffer-stringbuilder.html
Copyright © 2011-2022 走看看