简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象
因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,
所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,
JVM 的 GC 就会开始工作,那速度是一定会相当慢的。这里尝试举个不是很恰当的例子: String S1 = “abc”;
For(int I = 0 ; I < 10000 ; I ++) // For 模拟程序的多次调用
{
S1 + = “def”;
S1 = “abc”;
} 如果是这样的话,到这个 for 循环完毕后,如果内存中的对象没有被 GC 清理掉的话,内存中一共有 2 万多个了 牵扯到String里内容不断变换的时候用StringBuffer,
String S1 = “This is only a” + “ simple” + “test”; 速度要比 StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”); 快出很多
String S2 = “This is only a”;
String S3 = “ simple”;
String S4 = “ test”;
String S1 = S2 +S3 + S4;
速度则会慢很多
以上内容摘抄于http://blog.csdn.net/shirleyacount/article/details/39958371

最新文章

  1. Mac电脑如何读取Android手机上的文件
  2. Vuejs——(2)Vue生命周期,数据,手动挂载,指令,过滤器
  3. sql server 里类似replace的字符串子串删除
  4. (二)js下拉菜单
  5. decode 横竖转换 2
  6. oracle - redo 损坏或删除处理方法
  7. 使用CAShapeLayer绘图
  8. socket 异步通信的一些问题
  9. JXLS 2.4.0系列教程(五)——更进一步的应用和页面边距bug修复
  10. ASP.NET MVC 5 SmartCode Scaffolding for Visual Studio.Net
  11. JAVA虚拟机:对象的创建过程
  12. Java JDK 获取MongoDB中的所有账户
  13. VS code常用的几个插件
  14. MySQL常用运算符:算术运算符、比较运算符、逻辑运算符
  15. Python深入:Distutils发布Python模块--转载
  16. Spring Boot中application.yml与bootstrap.yml的区别(转载)
  17. 如何去掉jQWidgets中TreeGrid和Grid右下角的链接
  18. 每天一个linux命令(1):tail 命令
  19. ASP.NET存储Session的StateServer
  20. Singleton 单例模式(懒汉方式和饿汉方式)

热门文章

  1. sql视图和表的区别
  2. HTML之网页的基本介绍
  3. 【最长连续零 线段树】bzoj1593: [Usaco2008 Feb]Hotel 旅馆
  4. GIMP如何创建layer masks,创建,删除,禁用,复制mask
  5. 剑指Offer(书):合并两个排序的列表
  6. C++基本数据类型占字节数
  7. tomcat启动后 404 页面无法访问
  8. jq:mouseover和mouseout多次触发解决办法
  9. IOS 自动布局-UIStackPanel和UIGridPanel(五)
  10. suse-12-linux gcc gcc-c++离线安装教程,不使用yum等