String之常量池
String不变性
String中的值一旦确定则不可修改,不可修改指的是内存中的值不能修改而不是变量的值不能修改。
String常量池
使用双引号创建的字符称为String常量,也就是字符常量。
1、字符常量被存放在内存的常量池中
2、常量池中的值不会被gc回收,即gc不会清理这个区域的内容。
3、多次出现的字符常量,追在常量池中创建一个String对象(JVM做了优化)
常量池的位置:
jdk1.6中,常量池在方法区的PermGen Space永久代中(就是一个永久保存区域)
jdk1.7中,常量池在堆内存中
jdk1.8中,常量池在元空间中,和堆相独立