一、介绍
1、String:Java提供了String类来创建和操作字符串对象,
String的值是不可变的,每次对String的操作都会生成新的String对象,导致程序效率低且浪费内存空间。
//以下操作,是在常量池中创建了3个对象,分别是:"Hello"、" World"、"Hello World"
String str = "Hello";
str = str + " World";
2、StringBuildr 和 StringBuffer:这两个类的对象能够被多次的修改,并且不产生新的未使用对象。
二、区别
1、字符修改方面
String:不可修改字符串;
StringBuilder:可修改字符串、效率高、线程不安全;
StringBuffer:可修改字符串、效率低、线程安全;
2、效率排名
StringBuilder > StringBuffer > String
3、初始化
String 可被赋值为 null , 另外二者不可;
三者都可被赋值为 " " 。
String a = null; //没问题
String b = ""; //没问题
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(""); //StringBuffer对象是一个空的对象
三、小结
1、操作少量数据,可用String;
2、多线程、字符串缓冲区下、操作大量数据,用StringBuffer;
3、单线程、字符串缓冲区下、操作大量数据,用StringBuilder;