java - 循环 BigInteger 的有效方法

标签 java biginteger

我正在像这样循环 BigInteger:

BigInteger i = new BigInteger(Long.MAX_VALUE + "");
    BigInteger end = i.add(new BigInteger("10"));

    // Display results
    for (i = new BigInteger(Long.MAX_VALUE + "");
         i.compareTo(end) <= 0;
         i = i.add(new BigInteger("1"))) {
        System.out.println(i.multiply(i));
    }

由于内存使用量太大,因为每个循环都会创建新的 BigInteger 对象,而不是仅使用 ++ 增加值。

有没有办法增加值而不是每次都创建新对象?

最佳答案

好吧,您可以使用BigInteger.valueOf(long)来避免解析String。您可以使用 BigInteger.ONE,而不是在每次迭代时重新创建 1。就像,

BigInteger end = BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.valueOf(10));
// Display results
for (BigInteger i = BigInteger.valueOf(Long.MAX_VALUE); i.compareTo(end) <= 0; 
            i = i.add(BigInteger.ONE)) {
    System.out.println(i.multiply(i));
}

关于java - 循环 BigInteger 的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47384241/

相关文章:

java - 从什么时候开始在 Java 中必须包含一个空的构造函数?

java - BigInteger 和 BigDecimal 的平方根和++ 运算符

Java BigInteger分解: division and multiplication differ

c# - 接口(interface)实现及常用功能

java - 带有参数的 Java 中的 XSL 转换

java - 计算大数java的更快方法

java - 乘以没有大整数的大整数

java - 为什么 BigInteger 将 "80"(十六进制)解析为两个字节?

java - Swing JTextField如何去掉边框?

java - 使用 Geotools - JAVA 重命名另存为 TableName 的形状文件