java中的包装器类是以原始数据类型作为成员的类吗?
我想知道Integer类是如何工作的: 考虑 这是否意味着,“Integer”类有一个如下所述的构造函数,并在其中存储int值?请解释一下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,或者只是重用一个现有的。
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;