黑马程序员——使用String类时的一个注意事项

[url=http://edu.csdn.net/heima]android培训[/url]、[url=http://edu.csdn.net/heima]java培训[/url]、期待与您交流!

因为String是不可变对象,如果多个字符串进行拼接,将会形成多个对象,这样可能会造成内存溢出,会给垃圾回收带来工作量,如下面的应用最好不要用String

public class StringTest
{
public static void main(String[] args)
{
String s = "";

for(int i = 0; i < 100; i++)
{
[color=red]//以下语句会产生大量的对象
//因为String为不可变对象
//存在大量的对象相加或者相减的时候,一般不建议使用String
//建议使用StringBuffer 或 StringBuilder 优先选择StringBuilder
//采用JProbe可以对内存进行分析[/color]

s += i;
}
}
}

再介绍下StringBuffer 和 StringBuilder

StringBuffer称为字符串的缓冲区,它工作的原理是:预先申请一块内存,存放字符列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。StringBuffer是可变对象,这个是和String最大的不同。

StringBuilder和StringBuffer的区别是StringBuffer中所有的方法都是同步的线程安全的,但速度慢,StringBuilder的速度快,但是不是线程安全的,这也是为什么上面要首选StringBuilder


---------------------- [url=http://edu.csdn.net/heima]android培训[/url]、[url=http://edu.csdn.net/heima]java培训[/url]、期待与您交流! ----------------------

详细请查看:[url=http://edu.csdn.net/heima]http://edu.csdn.net/heima[/url]----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值