String, StringBuffer, StringBuilder
String是不可改变的量,也就是创建了以后就不能修改了
StringBuffer是可变字符序列,对象的值是可改变的
StringBuilder与StringBuffer基本相同,都是可变字符序列,不同点是:StringBuffer是线程安全的,StringBuilder是线程不安全的
弄清楚了三者的原理,就可以在不同场景下使用不同的字符序列了:
1.使用String类的场景
在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算
2.使用StringBuffer的场景
在频繁进行字符串的运算(如拼接、替换、删除等),并且运行在多线程的环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装
3.使用StringBuilder的场景
在频繁进行字符串的运算(如拼接、替换、删除等),并且运行在单线程的环境中,则可以考虑使用StringBuilder,如SQL语句的拼装、JSON封装等
String是不可改变的量,也就是创建了以后就不能修改了
StringBuffer是可变字符序列,对象的值是可改变的
StringBuilder与StringBuffer基本相同,都是可变字符序列,不同点是:StringBuffer是线程安全的,StringBuilder是线程不安全的
弄清楚了三者的原理,就可以在不同场景下使用不同的字符序列了:
1.使用String类的场景
在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算
2.使用StringBuffer的场景
在频繁进行字符串的运算(如拼接、替换、删除等),并且运行在多线程的环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装
3.使用StringBuilder的场景
在频繁进行字符串的运算(如拼接、替换、删除等),并且运行在单线程的环境中,则可以考虑使用StringBuilder,如SQL语句的拼装、JSON封装等