首页 > 解决方案 > 未实例化的整数将位于内存中的哪个位置?

问题描述

我有个问题; 我不知道它是否愚蠢......但无论如何我都会问。我们都知道,当我们说 String name = "someName"; 我们知道这是一个池化字符串时,它不会进入堆,但是......

如果我们说 Integer integer = new Integer(888); 我们知道这将在堆上......那么 Integer otherInteger = 444; “otherInteger”将在哪里得到?什么内存位置?谢谢!

标签: java

解决方案


字符串名称 = "someName"; String 是不可变类,String 类型是引用或非原始类型,因此名称引用指向“someName”对象,该对象位于堆中的“String-constant-pool”中。(无堆栈)。 Integer 是包装类(提供将基元转换为对象和将对象转换为基元的机制)。 代码 Integer otherInteger = 444; 是自动装箱的一个示例(https://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html),编译器会自动将此行转换为 Integer otherInteger = Integer.valueOf(444) ; . 因此,Integer otherInteger= Integer.valueOf(444) 返回 Integer 对象,即 this 放置在堆中。


推荐阅读