我像这样循环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
对象而不是仅使用++
增加值,因此占用内存太贵了。
有没有办法增加值而不是每次都创建新对象?
答案 0 :(得分:1)
好吧,您可以使用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));
}