1.String字符串常量、StringBuffer字符串变量、StringBuilder字符串变量
(1)String的值不可变,每次对String操作都会产生新的String对象;效率低下,浪费大量有限的内存空间。
(2)StringBuffer值可变,多次操作不会产生新的对象;线程安全,速度较慢。
(3)StringBuilder值可变,多次操作不会产生新的对象;线程不安全,速度较快。
2.三者的主要区别
(1)字符修改上的区别(主要,见下图分析)
(2)初始化上的区别,String可以空赋值,后者不行,报错
①String
String s = null;
String s = “abc”;
②StringBuffer
StringBuffer s = null; //结果警告:Null pointer access: The variable result can only be null at this location
StringBuffer s = new StringBuffer();//StringBuffer对象是一个空的对象
StringBuffer s = new StringBuffer(“abc”);//创建带有内容的StringBuffer对象,对象的内容就是字符串”
3.小结:
(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
参考文章: