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

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

StringBuffer:

     public void testStringBuffer() {
long start = System.currentTimeMillis();
StringBuffer sb = new StringBuffer(); for (int i = 0; i < COUNT; i++) {
sb.append(STR_INIT);
}
long end = System.currentTimeMillis(); System.out.println("StringBuffer 耗时:" + (end - start));
}

运行结果:基本在50毫秒

StringBuilder:

     public void testStringBuilder() {
long start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder(); for (int i = 0; i < COUNT; i++) {
sb.append(STR_INIT);
}
long end = System.currentTimeMillis(); System.out.println("StringBuilder 耗时:" + (end - start));
}

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

String:

     public void testString() {
long start = System.currentTimeMillis();
String s = ""; for (int i = 0; i < COUNT; i ++) {
s += STR_INIT;
} long end = System.currentTimeMillis(); System.out.println("Str 耗时:" + (end - start));
}

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

代码说明:

for循环的次数(COUNT)为 10000


StringBuffer和StringBuilder的区别:

StringBuffer——线程安全的

StringBuilder——非线程安全

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

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


UPDATE:2016-5-23

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

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

详细代码请参考:Github

字符串 —— String?StringBuffer?StringBuilder?的更多相关文章

  1. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  2. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  3. String,StringBuffer,StringBuilder的区别

    public static void main(String[] args) { String str = new String("hello...."); StringBuffe ...

  4. 关于String StringBuffer StringBuilder

    0. String对象的创建       1.关于类对象的创建,很普通的一种方式就是利用构造器,String类也不例外:String s=new String("Hello world&qu ...

  5. [置顶] String StringBuffer StringBuilder的区别剖析

    这是一道很常见的面试题目,至少我遇到过String/StringBuffer/StringBuilder的区别:String是不可变的对象(final)类型,每一次对String对象的更改均是生成一个 ...

  6. Java学习笔记--String StringBuffer StringBuilder

    String StringBuffer StringBuilder String http://docs.oracle.com/javase/7/docs/api/ 中文: http://www.cn ...

  7. String StringBuffer StringBuilder (转)

    转自:http://www.iteye.com/topic/522167 众所周知,String是由字符组成的串,在程序中使用频率很高.Java中的String是一个类,而并非基本数据类型. 不过她却 ...

  8. 【Java基础】String StringBuffer StringBuilder

    String String是不可变的 我们都知道String不是基本数据类型,而是一个对象,并且是final类型的,不可变的.(public final class String) 查看以下代码: S ...

  9. String,StringBuffer,StringBuilder的区别及其源码分析

    String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结: 1.先来分析一下这三个类之间的关系 乍一看它们都是用于处理字符串的java类,而 ...

  10. final,finally,finalize有什么区别?String, StringBuffer, StringBuilder有什么区别?Exception和Error有什么区别?

    继上篇JVM学习之后,后面将分三期深入介绍剩余JAVA基础面试题,每期3题. 题目一.final,finally,finalize有什么区别? /*请尊重作者劳动成果,转载请标明原文链接:*/ /* ...

随机推荐

  1. Leetcode#91 Decode Ways

    原题地址 动态规划题,注意0导致的小陷阱. 代码: int numDecodings(string s) { ] < ] > ; ] >= ] <= : ; ; int nex ...

  2. matrix_last_acm_4

    2013 ACM-ICPC吉林通化全国邀请赛 A http://acm.hust.edu.cn/vjudge/contest/view.action?cid=97654#problem/A 题意:输入 ...

  3. [工作积累] GCC 4.6 new[] operator内存对齐的BUG

    对于用户没有定义dctor(包括其所有成员)的类来说, new CLASS[n] 可能会直接请求sizeof(CLASS)*n的空间. 而带有dctor的 类, 因为delete[]的时候要逐个调用析 ...

  4. PowerDesigner(七)-数据库的生成和修改(转)

    数据库的生成和修改 使用ODBC接口连接数据库 访问数据库 预测数据库大小 生成数据库及数据库对象 PDM与用户数据库的同步 使用测试数据 暂不详述.

  5. UML构建模块(转载)

    UML描述的实时系统,这是非常重要的一个概念模型,然后进行逐渐. UML的概念模型可以通过学习掌握以下三大要素: UML构建模块 规则连接构建模块 UML的公共机制 本章介绍了所有的UML构建块. U ...

  6. 【ASP.Net MVC】AspNet Mvc一些总结

    AspNet Mvc一些总结 RestaurantReview.cs using System; using System.Collections.Generic; using System.Comp ...

  7. css hack一览

    浏览器对css hack的支持情况

  8. tomcat 多开设置 需要需改的3个端口

    启动多tomcat需要需改的3个端口 我所用Tomcat服务器都为zip版,非安装版.以两个为例: 安装第二个Tomcat完成后,到安装目录下的conf子目录中打开server.xml文件,查找以下三 ...

  9. SQL技术内幕-5 比较特殊 insert into 数据的写法

    ---比较特殊,第一次看到这种写法,记录下来 create table Student --学生成绩表 ( id int, --主键 Grade int, --班级 Score int --分数 ) ...

  10. 修改DevExpress中英文提示,将英文改为中文

    1 : 修改DX 提示框中的英文字符 /// <summary> /// 重写DX弹出框 英文变为中文 /// </summary> public class CHS : De ...