Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的包装器类是以原始数据类型作为成员的类吗?_Java_Wrapper_Primitive Types - Fatal编程技术网

java中的包装器类是以原始数据类型作为成员的类吗?

java中的包装器类是以原始数据类型作为成员的类吗?,java,wrapper,primitive-types,Java,Wrapper,Primitive Types,我想知道Integer类是如何工作的: 考虑 这是否意味着,“Integer”类有一个如下所述的构造函数,并在其中存储int值?请解释一下 class Integer { int a; public Integer (int a) { this.a=a; } } 这意味着它已经就位。javac生成调用Integer.valueOf(int)的代码,该代码可能构造一个新的Integer,也可能不构造一个新的Integer,或者只是重用一个现有的。

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

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

class Integer
{
    int a;

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

这意味着它已经就位。

javac
生成调用
Integer.valueOf(int)
的代码,该代码可能构造一个新的
Integer
,也可能不构造一个新的
Integer,或者只是重用一个现有的
。在JLS中,这一点由。

非常接近。查看(显然是Harmony的,因此Sun/Oracle JVM可能有点不同)。自动装箱转换(当您将原语分配给包装类时)使用valueOf的等效项,它缓存“公共”整数并为其余整数创建新整数。

您总能找到最新的OpenJDK整数类:

相关字段为(第645行):


没有理由猜测Integer类有什么。看看你自己的源代码,一个例外是
Void
,它没有公共构造函数(或里面的值)@ranjanarr取决于实现。它位于通常的Oracle JDK的
src.zip
中。确切的代码在更新之间发生了变化。是的,基本上是一样的,只是他们用了“value”而不是“a”。请参见第38行和第83行-85@rananarr-看看我的评论。
class Integer
{
    int a;

    public Integer (int a)
    {
        this.a=a;
    }
}
/**
 * The value of the {@code Integer}.
 *
 * @serial
 */
private final int value;