您的位置:首页 > 产品设计 > UI/UE

String,StringBuffer,StringBuilder的区别

2015-10-27 13:21 267 查看
String 

String str="abc";这是先去找“abc”,如果有,则更改指向,没有,新建一个“abc”,再更改指向。String对象为常量,一旦创建就不可更改,所以我们把字符串b赋值给字符串a的时候,其实是更改指向,

String a="Hello";String b="World";a=a+b的操作不是直接在a后面增加,而是去找有没有“HelloWorld”,有则更改指向,没有,则新建一个String对象,所以在做字符串拼接的时候,用String对象直接+的效率是很低的,(每次都要去找,找不到就新建。)

StringBuffer

StringBuffer类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。这样使StringBuffer类的append方法追加字符
比 String使用 + 操作符高效得多。

StringBuffer的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。

StringBuilder

StringBuffer属于线程安全,相对为重量级
StringBuilder属于非线程安全,相对为轻量
线程安全的概念:
网络编程中许多线程可能会同时运行一段代码。当每次运行结果和单独线程运行的结果是一样的,叫做线程安全。为了达到线程安全的目的在一定程度上会降低程序的性能。所以在单线程中,StringBuilder的性能要比StringBuffer高。多线程为了线程安全需要采用StingBuffer。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息