String ,代表字符序列不可变的字符串,且Sring不需要线程安全,线程不安全的版本,因为String本身是不可变的类,
而不可变类总是线程安全的。
StringBuilder ,StringBuffer代表字符序列可变的字符串,其中StringBuiler是线程不安全的版本,StringBuffer是线程安全版本。
public class ImmutableString { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str = "hello"; System.out.println(System.identityHashCode(str)); str = str + "java"; System.out.println(System.identityHashCode(str)); str = str + ", crazyit.org"; System.out.println(System.identityHashCode(str)); } }
25860399 5184781 33311724
public class MutableString { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub StringBuilder str = new StringBuilder("Hello"); System.out.println(str); System.out.println(System.identityHashCode(str)); str.append(" java"); //str = str + "java"; System.out.println(str); System.out.println(System.identityHashCode(str)); //str = str + ", crazyit.org"; str.append(", crazyit.org"); System.out.println(str); System.out.println(System.identityHashCode(str)); } }
Hello 31843011 Hello java 31843011 Hello java, crazyit.org 31843011