String为什么设计成不可变的

①字符串常量池的需要;当一个字符串值已经存在常量池中,就不会再取创建一个新的对象,而是要用已经存在的对象,假如字符串对象允许改变,将会导致各种逻辑错误,所以这种常量池的思想,算是一种优化手段;
②允许String对象缓存HashCode;字符串不变性保证了hash码的唯一性,因此可以放心地进行缓存,这样也是一种优化手段,意味着不必每次都去计算新的hash码值;
③安全性;String被许多java类用来当做参数,像一些网络链接地址URL,文件路径path,反射机制所需要的String参数等,假如String不是固定不变的,将会引起各种安全隐患;

posted @ 2020-05-17 23:25  等你的夏天  阅读(14)  评论(0编辑  收藏  举报