关闭

【java基础】String Pool

标签: javastring
313人阅读 评论(0) 收藏 举报
分类:

String Pool正如它的名字所说明的那样,是在heap memory中保存一个字符串池.

使用String Pool主要的目的是用来节省存储空间,一般java程序中分布着大量的字符串变量.Java中String对象的内容是不能被修改的,因此,如果字符串的内容是一样,就没有必要再重新创建一个新字符串对象来表示,完全可以把已经存在的对象作为返回,这样可以有效剩下空间.这种方式需要在定义字符串的时候使用双引号,例如: String a = “alice”,如果使用String的构造方法String(String)这时JVM并不会将创建的对象放到String Pool当中,而是在heap中的其他位置分配空间去创建String对象.

可以看如下的小例子:


public class StringPool {
    public static void main(String[] args) {
        String a = "Alice"; //String Pool
        String b = "Bob";  //String Pool

        String a1 = "Alice"; //String Pool
        String b1 = new String("Bob"); // heap but not in string pool

        System.out.println("a == a1 ? " + (a == a1));
        System.out.println("b == b1 ? " + (b == b1));
    }
}

执行的结果:

a == a1 ? true
b == b1 ? false

下面的图描述的不同创建方式所分配的内存空间的策略:

这里写图片描述

参考:
http://www.journaldev.com/797/what-is-java-string-pool

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55305次
    • 积分:1677
    • 等级:
    • 排名:千里之外
    • 原创:108篇
    • 转载:14篇
    • 译文:5篇
    • 评论:9条
    最新评论