正确使用String、StringBuffer、StringBuilder

来源:互联网 发布:我的世界0.14.0家具js 编辑:程序博客网 时间:2024/06/03 04:38
    CharSequence接口有三个实现类与字符串相关:String、StringBuffer、StringBuilder,虽然它们都与字符串有关,但是处理机制是不同的。

String、StringBuffer、StringBuilder简述

(一)String类:是不可改变的量,创建后是不可修改的。即内容不可变的字符串,改变内容就是创建新对象。

(二)StringBuffer类: 是可变字符序列,跟String一样,在内存中保存的都是有序的字符序列(char类型的数组),不同点是StringBuffer对象的值是可改变的。即内容可变的字符串,改变内容不改变对象。

(三)StringBuilder类: 跟StringBuffer类也是可变字符序列。不同点是:StringBuffer是线程安全的,方法前都有synchronized关键字;而StringBuilder是线程不安全的。

(四)性能方面: String类的操作都是产生新的String对象,而StringBuffer和StringBuilder只是字符数组的扩容而已,所以String类的操作要远慢于StringBuffer和StringBuilder。

使用场景

(一)使用String类的场景

在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算等。

(二)使用StringBuffer类的场景(多线程)

在频繁进行字符串的运算(如拼接、替换、删除等),并且运行多线程的环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装等。

(三)使用StringBuilder类的场景(单线程)

在频繁进行字符串的运算(如拼接、替换、删除等),并且运行单线程的环境中,则可以考虑使用StringBuilder,例如SQL语句的拼装、JSON封装等。

1 0
原创粉丝点击