【java基础】String Pool

本文介绍了Java中的字符串池(StringPool),解释了它如何帮助节省内存空间。通过实例演示了字符串池的工作原理,比较了直接声明字符串与使用构造方法创建字符串的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值