首页 > 代码库 > java中的String、StringBuffer、StringBuilder的区别
java中的String、StringBuffer、StringBuilder的区别
String、StringBuffer、StringBuilder都是java中的常用字符串类 ,下面来看看三者之间的异同。
一、可变与不可变:
String:字符串常量,不可变。StringBuffer、StringBuilder为可变字符序列,是可变的。
二、是否多线程安全:
String中的对象是不可变的,相当于常量,显然线程安全。
StringBuffer:支持多线程安全。
StringBuilder:不支持多线程安全。
三、执行效率:
String、StringBuffer、StringBuilder用于字符串拼接:String str1="asdfgh"; String str2="lkjhdsa";
方法一、
使用String:String str3=str1+str2; 效率最低。
方法二、
使用StringBuffer::str1.append(str2); //使用StringBuiffer的append()方法进行追加。 效率较高(由于其需要实现线程安全,故效率比StringBuilder低。)
方法三、
使用StringBuilder:str1.append(str2); //使用StringBuilder的append()方法进行追加。 效率最高 。(不用考虑线程安全问题,故执行效率最高)
总结:
一、如果要操作少量的数据,用String ;单线程操作大量数据,用StringBuilder ;多线程操作大量数据,用StringBuffer。
二、不要使用String类的"+"来进行频繁的拼接,因为那样的性能极差的,应该使用StringBuffer或StringBuilder类。
注:StringBuilder和StringBuffer都具有如下方法显示对字符串的增、删、改、查功能。
增:insert();
删:delete();
改:replace();
查:indexOf();
其具体用法可以参考java API文档。
java中的String、StringBuffer、StringBuilder的区别