1.jvm内存中有一个字符串常量池,String s="123";String
b=s;如果字符串是可以改变的,那么指向字符串的所有变量都是可以变化的,这不符合String
interning规则(多个变量指向同一个一个字符串,jvm内存中只保持一份变量)
2.数据库用户名,密码;socket通信中ip,port都是String类型的,如果String可变,那么,很危险
3.一个字符串实例可以被多个线程共享,如果String是变化的,那么线程不会安全,那么就需要线程同步的;
4.类加载器要用到字符串,如果String可变,那么类可能不能正确加载
5.String不可变的,那么加入hashmap,加入的时候,hashcode就被缓存了,通过key获取value速度加快;所以hashmap键用String