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

  • 相关阅读:
    excel数据导入mySql数据库
    springboot-devtools实现项目的自动重启
    Java中List, Integer[], int[]的相互转换
    Postman代码测试工具如何用?
    git提交代码时,Unstaged changes如何过滤.class .log等文件
    Json字符串转map集合
    实现hibernate 的validator校验
    [转载]OpenSSL中文手册之命令行详解(未完待续)
    Openssl ASN.1 说明一 分享
    [转载]Parsing X.509 Certificates with OpenSSL and C
  • 原文地址:https://www.cnblogs.com/memory4young/p/java-string-stringbuffer-stringbuilder.html
Copyright © 2011-2022 走看看