java中的StringBuffer类和StringBuilder类
2015-10-23 20:12
477 查看
StringBuffer,这是一个看起来和String有亲缘关系的类,事实上,的确如此,但StringBuffer在包含String类所有基本功能的情况更适合使用在需要频繁操作字符串的场合。
首先,来看一句话
"对于String,字符串常量一旦声明则不可改变,而字符串对象则可以改变,但是改变的是其内存地址的指向"
这里看一个简单的例子:
String s="abc";//此时s指向对象new String("abc")
s="bcd"; //此时s指向new String("bcd"),原来指向对象被抛弃
此外,s=s+"hello";仍然表示指向了新对象new String("bcdhello"),为了存储新的对象中间JVM会自动生成一个BufferString。
StringBuffer中字符串的连接使用append()方法
String无法被继承,因为使用了final定义。
String——>StringBuffer
StringBuffer——>String
StringBuffer中的三个常用方法
reverse() 字符串反转操作
replace(start,end,"str") 字符串指定部分替换操作
insert(pos,"str") 字符串指定位置插入字符串操作
以上三个方法String类不存在
这里我们再引入一个字符串类StringBuilder
StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快,两者的方法基本相同。
推荐博客:/article/2299594.html
首先,来看一句话
"对于String,字符串常量一旦声明则不可改变,而字符串对象则可以改变,但是改变的是其内存地址的指向"
这里看一个简单的例子:
String s="abc";//此时s指向对象new String("abc")
s="bcd"; //此时s指向new String("bcd"),原来指向对象被抛弃
此外,s=s+"hello";仍然表示指向了新对象new String("bcdhello"),为了存储新的对象中间JVM会自动生成一个BufferString。
StringBuffer中字符串的连接使用append()方法
public class StringBufferDemo01 { public static void main(String[] args) { StringBuffer buf = new StringBuffer() ; buf.append("hello") ; buf.append(" ").append("world").append("!!!") ; System.out.println(buf) ; } }
String无法被继承,因为使用了final定义。
String——>StringBuffer
public class StringBufferDemo02 { <span style="white-space:pre"> </span>public static void main(String[] args) { String s="hello"; <span style="white-space:pre"> </span>StringBuffer buf = new StringBuffer(str) ; <span style="white-space:pre"> </span>System.out.println(buf) ; <span style="white-space:pre"> </span>} }
StringBuffer——>String
public class StringBufferDemo02 { public static void main(String[] args) { StringBuffer buf = new StringBuffer() ; buf.append("hello") ; String str = buf.toString() ; // StringBuffer --> String System.out.println(str) ; } }
StringBuffer中的三个常用方法
reverse() 字符串反转操作
replace(start,end,"str") 字符串指定部分替换操作
insert(pos,"str") 字符串指定位置插入字符串操作
以上三个方法String类不存在
这里我们再引入一个字符串类StringBuilder
StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快,两者的方法基本相同。
推荐博客:/article/2299594.html
相关文章推荐
- 读《认知与设计:理解UI设计准则》第五章
- UC/OS和UCGUI移植札记
- request
- MSBuild 命令行参考
- MSBuild入门(续)
- 给UITabbarController 和 UINavigationController添加过场动画
- MSBuild入门
- UE3 移动设备分析
- IOS笔记UI--首次启动介绍和LaunchDemo
- 【NGUI】Input.GetTouch判断手指状态
- True(False) Positives (Negatives), 召回率和精度定义
- 关于UITextView的textViewDidChange回调没有调用的问题解决
- 关于UITextView的textViewDidChange回调没有调用的问题解决
- UE3 基本的分析及优化技术
- iOS UIlabel sizeToFit失效的问题
- requirejs加载文件带上md5版本号的解决方案
- 我学习的第一个uiautomator从创建到运行结束
- 多次弹出ShowModalDialog无法取到returnValue的问题
- UIScrollView遇上AutoLayout
- druid  overlord集群datasouce接入