String是不可变的,原因
1是可以缓存hash值,因为String的hash值经常被使用,例如String用作HashMap等。不可变特性
使得hash值不变,因此只需要进行一次计算;
2String Pool的需要, 如果String已经被创建过了,那么就会从String Pool中取得引用,只有String是 不变的才能使用String Pool;
StringBuffer和StringBuilder可变;
String与StringBuffer是线程安全的;StringBuilder不是线程安全的,使用synchronized来同步;
String可以再多线程中使用;