常量池的理解,8个包装类和string和其他类生成对象的不同之处

郭永瘦 2019-03-17 09:23:21
Byte ,Short ,Integer ,Long ,Character的对象池(常量池)的取值范围是-128到正的127,当超过这个范围的对象会开辟自己的堆内存,Boolean也实现了对象池技术,Double和Float这两种浮点类型的包装类没有实现这个技术。
对象池的创建为了减少频繁创建对象,将一些对象保存在一个容器中,用的时候提取出来不用了在装起来。
String类型当有new创建对象且调用的有参构造方法,会创建两个对象一个存入堆区另一个放在放法区的常量池中,为了避免创建过多的对象占用内存空间,String类中的intern()会查找常量池中是否有和输入的对象equal()一样的如果存在则直接返回该对象,如果不存在先在常量池中创建这个对象然后再返回。
其他类生成的每一个对象都会在堆区开辟内存空间,有自己独特的地址
...全文
98 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ml_dark 2019-03-18
  • 打赏
  • 举报
回复
消灭0回复这5个字少于了6个字符长

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧