Java 有字符串池,因此字符串类的对象是不可变的。
但我的问题是——
创建 String POOL 需要什么?
为什么字符串类不像其他类那样保存它自己的值?
JVM 内部是否需要一些字符串,或者这是一种性能优势。如果是怎么办?
最佳答案
池是可能的,因为字符串是不可变的。但是 String 的不变性并不仅仅因为这个池而被决定。不变性还有许多其他好处。顺便说一句,Double
也是不可变的,并且没有 Double 池。
字符串池的需求是减少保存程序使用的所有字符串文字(和驻留字符串)所需的内存,因为这些文字很有可能在程序的许多地方被多次使用.您不必拥有相同字符串文字的数千个副本,而只需拥有对相同字符串的数千个引用,这样可以减少内存使用量。
请注意,String 类与其他类没有什么不同:它拥有自己的 char 数组。不过,当调用 substring 时,它也可能与其他 String 实例共享它。
关于java - java中的字符串池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8788143/