我们知道如何声明对象。我的问题仅与此有关。
根据 Java,以下语句是合法的:
BigInteger number = BigInteger.valueOf(2);
但我不明白的是内存是如何分配的。我们不使用关键字new
来分配内存,那么返回的BigInteger
2如何存储在number中呢?
最佳答案
您正在调用静态方法 BigInteger.valueOf
,该方法创建 Biginteger
的实例并返回对其的引用,您将该引用分配给您的number
变量。
在内部,此方法使用 new 关键字创建实例,或从缓存中检索以前创建的实例。
public static BigInteger valueOf(long val) {
// If -MAX_CONSTANT < val < MAX_CONSTANT, return stashed constant
if (val == 0)
return ZERO;
if (val > 0 && val <= MAX_CONSTANT)
return posConst[(int) val];
else if (val < 0 && val >= -MAX_CONSTANT)
return negConst[(int) -val];
return new BigInteger(val);
}
关于Java BigInteger 内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30069064/