为什么Wrapper类没有池类似于Stringpool?

时间:2015-04-19 18:30:42

标签: java string wrapper string-pool

整数,字符,双精度等 - 所有这些都是像String这样的不可变类。 String有Stringpool来保存内存,但为什么这些包装器没有类似的池?

我已经检查过:Integer有一个类似的池,最多只有127个,但不超过这个。

2 个答案:

答案 0 :(得分:4)

除非有人能从Gosling,et。找到设计文件。大约在1994年左右专门解决这个问题,这是不可能肯定的。

一个可能的原因是,复杂性和开销并不值得获益。字符串是A)一个更大的和B) 很多 Integer更常见的,{ {1}}等等,因为大多数人只要能够使用原语,只能使用他们无法避免的包装。

答案 1 :(得分:1)

IMO,String是java中最常用的类型。作为加载类的参数,连接到DB /网络连接的参数,(几乎)存储每个东西 - 列表很长。在任何应用程序中,与String相比,其他原语/包装类型组合在一起的使用场景也可以忽略不计。

如果以未经优化的方式使用(例如,在没有Stringpool的情况下实现),性能将会有所提升 - 因此拥有一个(仅)字符串池是有意义的。

相关问题