StringBuffer笔记
2024-08-27 20:00:18
简要的说, 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
最新文章
- Mac电脑如何读取Android手机上的文件
- Vuejs——(2)Vue生命周期,数据,手动挂载,指令,过滤器
- sql server 里类似replace的字符串子串删除
- (二)js下拉菜单
- decode 横竖转换 2
- oracle - redo 损坏或删除处理方法
- 使用CAShapeLayer绘图
- socket 异步通信的一些问题
- JXLS 2.4.0系列教程(五)——更进一步的应用和页面边距bug修复
- ASP.NET MVC 5 SmartCode Scaffolding for Visual Studio.Net
- JAVA虚拟机:对象的创建过程
- Java JDK 获取MongoDB中的所有账户
- VS code常用的几个插件
- MySQL常用运算符:算术运算符、比较运算符、逻辑运算符
- Python深入:Distutils发布Python模块--转载
- Spring Boot中application.yml与bootstrap.yml的区别(转载)
- 如何去掉jQWidgets中TreeGrid和Grid右下角的链接
- 每天一个linux命令(1):tail 命令
- ASP.NET存储Session的StateServer
- Singleton 单例模式(懒汉方式和饿汉方式)
热门文章
- sql视图和表的区别
- HTML之网页的基本介绍
- 【最长连续零 线段树】bzoj1593: [Usaco2008 Feb]Hotel 旅馆
- GIMP如何创建layer masks,创建,删除,禁用,复制mask
- 剑指Offer(书):合并两个排序的列表
- C++基本数据类型占字节数
- tomcat启动后 404 页面无法访问
- jq:mouseover和mouseout多次触发解决办法
- IOS 自动布局-UIStackPanel和UIGridPanel(五)
- suse-12-linux gcc gcc-c++离线安装教程,不使用yum等