java中的包装类是一个原始数据类型为成员的类吗?

时间:2011-02-14 04:45:16

标签: java wrapper primitive-types

我想知道Integer类是如何工作的: 考虑

Integer number=2;

这是否意味着,“Integer”类有一个如下所述的构造函数,它将int值存储在其中?请解释。

class Integer
{
    int a;

    public Integer (int a)
    {
        this.a=a;
    }
}

4 个答案:

答案 0 :(得分:6)

非常接近。查看the source code for Integer(显然来自Harmony,因此Sun / Oracle JVM可能会略有不同)。自动装箱转换(当您将基元分配给包装类时)使用等价的valueOf,它会缓存“常用”整数并为其余整数创建新的整数。

答案 1 :(得分:2)

javac生成调用Integer.valueOf(int)的代码,该代码可能会也可能不会构建新的Integer,或者只是重用现有的{{1}}。在JLS中,"boxing conversions"涵盖了这一点。

答案 2 :(得分:1)

这意味着auto boxing已到位。

答案 3 :(得分:0)

您始终可以找到最新的OpenJDK Integer类here

相关字段(来自第645行):

/**
 * The value of the {@code Integer}.
 *
 * @serial
 */
private final int value;