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

String,StringBuffer,StringBuilder之间的区别

2016-04-17 00:13 501 查看
分析它们之间的不同,可以从以下5方面进行:

1.从可变对象与不可变对象

首先,String类是final类型的,所以不能被继承,String对象也是不可变对象,对一个String对象进行修改,其实是新建新了一个String对象,再将值重新赋值进去的。而StringBuffer,StringBuilder对象,都是可变对象。

2.实例化方式不同

对String对象的创建可以通过构造函数,也可以通过直接赋值,如:String s=new String("cgf life")或String s="cgf life",但是对于StringBuffer,StringBuilder对象必须通过构造函数

3.同步与异步(线程安全与非线程安全)

StringBuffer的方法都用synchronized修饰过,而StringBuilder的方法并没有用synchronized修饰过,所以StringBuffer对象是线程安全的,而StringBuilder对象不是线程安全的。

4.执行效率

StringBuffer是同步的,所以会影响执行速度,它比StringBuilder要慢,如果是单线程,用StringBuilder比较好。

对String对象进行赋值,它的内部是首创建一个StringBuffer的对象,然后调用StringBuffer的append()方法进行赋值的,最后将StringBuffer利用toString()方法转化为String对象,所以StringBuffer的效率会比String要高,所以三则的执行效率为:String<StringBuffer<StringBuilder
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: