Java中String,StringBuilder,StringBuffer的区别

来源:互联网 发布:购买淘宝小号 编辑:程序博客网 时间:2024/06/14 10:34

基本概念

1.String
String是个final类,不能被继承。同时相应的对象也是一个不可变对象,一旦创建就不能修改它的值。平时对于String的修改都是重新创建一个新的 对象,然后把新的值保存进去的。

2.StringBuffer
StringBuffer是一个对象可变的类,对他进行修改的时候不会像String那样重新创建一个对象。

3.StringBuilder
StringBuilder也是一个对象可变的类,对他进行修改的时候不会像String那样重新创建一个对象。StringBuilder和StringBuffer的区别就是StringBuilder的方法不是线程安全的了,但是速度快。

线程安全

如果进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他变量的值也和预期的是一样的,就是线程安全的。

建议

少量数据操作,可以使用String;如果是单线程操作大量数据,则用StringBuilder;如果是多线程,则使用StringBuffer。

不要使用String的“+”进行连接操作,使用StringBuffer和StringBuilder的append操作。

使用StringBuilder比StringBuffer仅能够提升10%-15%的性能,一般情况下不确定是否会有多线程的情况比较下,还是选择StringBuffer比较的保险。

0 0
原创粉丝点击