String是不可变的,原因

  1是可以缓存hash值,因为String的hash值经常被使用,例如String用作HashMap等。不可变特性

    使得hash值不变,因此只需要进行一次计算;

  2String Pool的需要, 如果String已经被创建过了,那么就会从String Pool中取得引用,只有String是           不变的才能使用String Pool;

StringBuffer和StringBuilder可变;

String与StringBuffer是线程安全的;StringBuilder不是线程安全的,使用synchronized来同步;

String可以再多线程中使用;

05-18 15:24