这是我这些天对常量池的理解跟大家分享一下,望多多指教批评
在八中包装类中
Byte ,Short ,Integer ,Long ,Character的对象池(常量池)的取值范围是-128到正的127,当超过这个范围的对象会开辟自己的堆内存,Boolean也实现了对象池技术,Double和Float这两种浮点类型的包装类没有实现这个技术。
对象池的创建为了减少频繁创建对象,将一些对象保存在一个容器中,用的时候提取出来不用了在装起来。
String类型当有new创建对象且调用的有参构造方法,会创建两个对象一个存入堆区另一个放在放法区的常量池中,为了避免创建过多的对象占用内存空间,String类中的intern()会查找常量池中是否有和输入的对象equal()一样的如果存在则直接返回该对象,如果不存在先在常量池中创建这个对象然后再返回。
其他类生成的每一个对象都会在堆区开辟内存空间,有自己独特的地址
常量池的理解,8个包装类和String和其他类生成对象的不同之处
最新推荐文章于 2022-10-23 15:25:37 发布