Java BigInteger 内存分配

标签 java memory-management biginteger

我们知道如何声明对象。我的问题仅与此有关。

根据 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/

相关文章:

c - 使用自定义分配实现分配内存时出现段错误;适用于除 8 字节以外的所有大小

python 线程内存使用 64 位与 32 位

java - 在检查 BigInteger 的可整除性时,我应该使用 mod 还是 remainder?

java - 在JSP中使用类

java - 我的 ArrayList 正在覆盖以前的数据

java - 使用 Smaxe 的 JUV RTMP 客户端发送元数据 (Java)

c++ - 是否可以在运行时在堆上创建一个数组,然后在需要时分配更多空间?

java - Spring正确调用属性文件

java - 如有必要,切换到 BigInteger

java - 如何在java中计算字符串格式的大数模