您的位置:首页 > 编程语言 > Java开发

java中字符串为何设置为不可改变对象

2017-12-05 10:41 465 查看
我们知道java中的字符串是不可改变对象,但是设置为不可改变对象有哪些好处?以下列举:

1.节省空间:java中维护一个字符串池,比如将a和b都想赋予“hello world”,如果不使用不可变对象,也就无法维护这个字符串池,a和b将会各自独占一段内存空间保存”hello world”字符串,也就是说虽然值一样,但是占用了两份内存,但是如果使用不可变的string维护该池,则只需向a和b传递地址即可,这样,即使有更多的对象想要复制”hello wolrd”都不会占用更多的内存空间,效率更高。

2.多线程安全:同一个字符串可以被多个线程共享,不用担心同步的问题,因为字符串对象本身不可改变,不会出现改变该字符串的值导致其他引用该值的程序也发生改变。

3.因为字符串是不可变的,所以在它创建的时候hashcode就被缓存了,不需要重新计算。这就使得字符串很适合作为Map中的键,字符串的处理速度要快过其它的键对象。这就是HashMap中的键往往都使用字符串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java