java - java中的字符串池

标签 java string pool

Java 有字符串池,因此字符串类的对象是不可变的。

但我的问题是——

创建 String POOL 需要什么?

为什么字符串类不像其他类那样保存它自己的值?

JVM 内部是否需要一些字符串,或者这是一种性能优势。如果是怎么办?

最佳答案

池是可能的,因为字符串是不可变的。但是 String 的不变性并不仅仅因为这个池而被决定。不变性还有许多其他好处。顺便说一句,Double 也是不可变的,并且没有 Double 池。

字符串池的需求是减少保存程序使用的所有字符串文字(和驻留字符串)所需的内存,因为这些文字很有可能在程序的许多地方被多次使用.您不必拥有相同字符串文字的数千个副本,而只需拥有对相同字符串的数千个引用,这样可以减少内存使用量。

请注意,String 类与其他类没有什么不同:它拥有自己的 char 数组。不过,当调用 substring 时,它也可能与其他 String 实例共享它。

关于java - java中的字符串池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8788143/

相关文章:

python - 字符串的基本递归?

Swift 4 contains 方法对于像 "as"这样的短单词并不起作用

python - 使用 numpy/scipy 最小化 Python multiprocessing.Pool 中的开销

java - 如何将数组添加到firebase数据库中的项目?

java - 为什么我的 foreach 循环不能打印出数组的内容,而 for 循环却可以?

java - Java 中的矩阵运算

PHP:URL 友好字符串

戈朗 : How do I create a new Couchbase pool?

python - 如何关闭/退出从 multiprocessing.Pool 生成的 Selenium Chrome 驱动程序?

java - Mockito 无法模拟此类 JestClient