Java 中的 常量共享池 什么意思?

一直有个疑问,java中字符串池,String池,共享池是怎么回事?

好像知道什么意思,但具体又不太清楚,所以也一直没太关注。
从网上看了些资料,解释了下疑问。
在java的栈中,有共享池的概念,把一些常量会放到这个共享池中,包括字符串常量和基本类型常量。
共享的操作时在编译时 由编译器完成的,可以节省内存,并提高效率。
例如语句string str = "hello",  首先在栈中创建字符串引用变量str, 再看看栈中有没有“hello”,如果有就str直接指向它,没有就创建“hello”并放在栈中,然后指向它。
对于int之类的基本类型的变量也差不多都是这样的。

而对于 String str = new String("hello"),则是创建新的对象,并放在堆内存中。是在runtime的时候分配内存的。
这样做效率和节省内存方面不如String str = “hello”, 但是更灵活,如果编译时不知道要创建什么样的字符串,就
只能运行时创建了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值