java中关于Integer类创建对象的问题

毕设导航 其他问答 1

integer的创建问题 Integer i = 1;Integer i2 = 1; 这种创建类型, i在堆中是否有对象

  • 有对象 对象引用的是 常量池 缓存 ?还是在创建对象的时候同时创建一个缓存?如果是缓存,i2是谁的引用呢?
  • 没对象 是在栈中直接保存的数值还是栈中保存的常量池地址?还是缓存?

回复

共1条回复 我来回复
  • 毕设工厂
    这个人很懒,什么都没有留下~
    评论

    有对象,Integer i = 1相当于是Integer i = Integer.valueOf(1),这个valueOf方法会判断传入的整型参数的值是否在[-128,127]范围内,在的话,直接赋值IntegerCache里的一个对象,而这个对象是在加载类的时候就已经创建的(静态代码块执行)。 Integer i2 = 1同上,所以i2 == i 为true。

    0条评论

发表回复

登录后才能评论