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中的键往往都使用字符串。
1.节省空间:java中维护一个字符串池,比如将a和b都想赋予“hello world”,如果不使用不可变对象,也就无法维护这个字符串池,a和b将会各自独占一段内存空间保存”hello world”字符串,也就是说虽然值一样,但是占用了两份内存,但是如果使用不可变的string维护该池,则只需向a和b传递地址即可,这样,即使有更多的对象想要复制”hello wolrd”都不会占用更多的内存空间,效率更高。
2.多线程安全:同一个字符串可以被多个线程共享,不用担心同步的问题,因为字符串对象本身不可改变,不会出现改变该字符串的值导致其他引用该值的程序也发生改变。
3.因为字符串是不可变的,所以在它创建的时候hashcode就被缓存了,不需要重新计算。这就使得字符串很适合作为Map中的键,字符串的处理速度要快过其它的键对象。这就是HashMap中的键往往都使用字符串。
相关文章推荐
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- 使用jackson的writeValueAsString把java对象输出成字符串实例,设置应答体的类型
- 为什么Java字符串是不可变对象?
- java字符串为什么是不可变对象
- Java_集合操作_asList方法产生的List对象不可改变
- 字符串与正则表达式1、字符串 String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- Java不可改变字符串
- 使用json-lib将java对象转换成json字符串
- 深入研究java对String字符串对象的创建以及管理
- 深入研究java对String字符串对象的创建以及管理
- Java解析XML格式字符串返回Document类型对象(2009-05-01 04:33:26)转载标签:javaxmldocument杂谈 分类:软件,网络
- GSON(JSON字符串转换成一个相等的Java对象)
- 使用Java操作JSON字符串对象
- Java中三种变量的拷贝方法比较: 值变量,对象变量,字符串变量