字符串较少,也就是说可以不用进行拼接的就直接用String
String
类代表字符串。字符串是常量;它们的值在创建之后不能更改,也因此可以共享。实现也很方便如:String str="abc";
如需大量拼接的话建议使用StringBuffer或StringBuilder;
因为字符串创建后不可更改,所以做拼接操作时实际上是new String(),比如:
String str = "abc";
str += "def"; //结果是abcdef
这个操作在内存中指向2个不同空间地址,大家都知道new操作就是在内存中开出一块新的空间,
就像这样new String("abc")、new String("abcdef"),
更准确的说new String("abcdef")应该是这样来的:
new StringBuilder("abc").append("def").toString();
API中有说明:字符串串联是通过
StringBuilder
或StringBuffer
类及其append
方法实现的。字符串转换是通过
toString
方法实现的。该方法由
Object
类定义,并可被 Java 中的所有类继承。所以用String进行拼接相关操作时既低效又耗内存。
字符串较多需要拼接操作的,如果是被多个线程使用的话就用StringBuffer
StringBuffer是线程安全的可变字符序列,相当于是String的字符串缓冲区,但不能修改,可以通过某些方法调 用可以改变该序列的长度和内容,StringBuffer的主要操作为append和insert,
append是将字符添加到缓冲区的末端;
insert可以在缓冲区的指定位置插入字符;
还有很多相关的操作可查看API
因为是线程安全的,所以可以将字符串缓冲区安全地用于多个线程,这也是和StringBuilder最主要的区别,
所以在多线程使用的情况下操作大量字符串使用StringBuffer
字符串较多需要拼接操作的,如果是被单线程使用的话就用StringBuilder
从 JDK 5 开始,为StringBuffer补充了一个单个线程使用的等价类,即StringBuilder。
与StringBuffer相比,通常应该优先使用StringBuilder 类,因为它支持所有相同的操作,
但由于它不执行同步,所以速度更快。
以上为个人对这三者使用的理解,有什么不对的地方还望各位大侠指教指教!!!