String、StringBuilder和StringBuffer的区别
2016-04-15 14:59
477 查看
继上篇《sql内联查询》
引言
上篇谈到了stringbuilder,接下来详细介绍下。并分享给亲们其与String和StringBuffer的区别。
StringBuilder是一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。
主要操作是append和insertt方法。append方法始终将这些字符添加到生成器的末端;而insert方法则在指定的点添加字符。例如,如果a引用一个当前内容为“生龙”的字符串生成器对象(StringBuilder a = new StringBuilder),则该方法调用a.append("活虎")使字符串生成器包含“生龙活虎”,而a.insert(1,"活虎")将更改字符串生成器,使之包含"生活虎龙",但a.insert(a.length(),"活虎")和append有同样的效果。StringBuilder类可以用于在无需创建一个新的字符串对象情况下修改字符串。
如果要声明多个string对象,那么就需要再内存为对象分配多个空间,造成系统开销过大。而StringBuilder在修 改字符串时不用创建新的对象,极大提升性能。有人说了,string对象可以用“+”连接操作啊,但是StringBuilder对象的append效率要比它高哦。
StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象。
StringBuilder是线程非安全的,StringBuilder是线程安全的。所以在大多数情况下我们是在单线程下用StringBuilder,多线程下用StringBuffer。
小结
对于三者的总结,如果要操作少量的数据用String,单线程操作字符串缓冲区下操作大量数据用StringBuilder,多线程操作字符串缓冲区下操作大量数据用StringBuffer。
引言
上篇谈到了stringbuilder,接下来详细介绍下。并分享给亲们其与String和StringBuffer的区别。StringBuilder是一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。
主要操作是append和insertt方法。append方法始终将这些字符添加到生成器的末端;而insert方法则在指定的点添加字符。例如,如果a引用一个当前内容为“生龙”的字符串生成器对象(StringBuilder a = new StringBuilder),则该方法调用a.append("活虎")使字符串生成器包含“生龙活虎”,而a.insert(1,"活虎")将更改字符串生成器,使之包含"生活虎龙",但a.insert(a.length(),"活虎")和append有同样的效果。StringBuilder类可以用于在无需创建一个新的字符串对象情况下修改字符串。
VS String
string是常量,定义后不能改变,stringbuilder定义后可以改变。如果要声明多个string对象,那么就需要再内存为对象分配多个空间,造成系统开销过大。而StringBuilder在修 改字符串时不用创建新的对象,极大提升性能。有人说了,string对象可以用“+”连接操作啊,但是StringBuilder对象的append效率要比它高哦。
VS StringBuffer
在执行速度方面的比较:StringBuilder>StringBufferStringBuffer与StringBuilder,他们是字符串变量,是可改变的对象。
StringBuilder是线程非安全的,StringBuilder是线程安全的。所以在大多数情况下我们是在单线程下用StringBuilder,多线程下用StringBuffer。
小结
对于三者的总结,如果要操作少量的数据用String,单线程操作字符串缓冲区下操作大量数据用StringBuilder,多线程操作字符串缓冲区下操作大量数据用StringBuffer。
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- android上改变listView的选中颜色
- String.intern
- Prototype源码浅析 String部分(二)
- Ruby中的String对象学习笔记
- insert语句太长用StringBuilder优化一下
- PostgreSQL ERROR: invalid escape string 解决办法
- 浅谈C++中的string 类型占几个字节
- 标准C++类string的Copy-On-Write技术
- C++实现string存取二进制数据的方法
- C#中string和StingBuilder内存中的区别实例分析
- PHP STRING 陷阱原理说明
- c#中 String和string的区别介绍
- C#实现的图片、string相互转换类分享
- asp.net String.IsNullOrEmpty 方法
- js实现C#的StringBuilder效果完整实例
- JavaScript中字符串(string)转json的2种方法
- C#中string用法实例详解