String,StringBuffer,StringBuilder
同为java.lang包下的两个操作字符串的类。
String是不可变类,当一个String对象被创建以后,„该对象所包含的字符序列是不可改变的(直到该对象被销毁)。
StringBuffer对象是字符序列可变的字符串对象,该类提供了append(),insert(),reverse(),setCharAt(),setLength()等方法,通过StringBuffer生成想要的字符串,便可通过toString()方法转换为String对象。
1 String s1 = "I'm Chiven"; 2 s1 += 2;
//输出I'm Chiven2 3 System.out.println(s1);
第一行代码先创建一个对象s1,进行赋值;第二行又创建一个s1用来赋值"I'm Chiven2";由于"I'm Chiven"没有被引用,之后被GC回收。所以通过两次对象的创建和赋值进行字符串的替换,效率底下。
StringBuffer sb1 = new StringBuffer("I'm Chiven"); sb1.append(2); //输出I'm Chiven2 System.out.println(sb1);
这里体现了StringBuffer的可变性。
StringBuffer和StringBuilder的区别:
两者的用法完全相同,StringBuffer是线程安全的,StringBuilder的效率较高。所以当单线程时,用StringBuilder效率较高,如果会涉及到多线程,则用StringBuffer