我想知道Integer类是如何工作的: 考虑
Integer number=2;
这是否意味着,“Integer”类有一个如下所述的构造函数,它将int值存储在其中?请解释。
class Integer
{
int a;
public Integer (int a)
{
this.a=a;
}
}
答案 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;