有一个PMD rule说如果有预定义的常量,应该避免实例化BigInteger或BigDecimal。为什么要避免Java中的biginteger实例化
BigInteger.ZERO
// instead of
new BigInteger(0)
会有比保存几个字节还有其他好处吗?
有一个PMD rule说如果有预定义的常量,应该避免实例化BigInteger或BigDecimal。为什么要避免Java中的biginteger实例化
BigInteger.ZERO
// instead of
new BigInteger(0)
会有比保存几个字节还有其他好处吗?
它避免了这几个字节,并需要分配到收集他们回来以后
在紧密循环,可以不管
是的,保存了一些JVM指令。
可能的表现,如果你实例化一个很大0的。长/ int参数的替代方法是
BigInteger.valueOf(0)
返回BigInteger.ZERO当参数为0
而不是创建与new BigInteger
一个新的对象,你最好使用它创建一次一个静态对象当BigInteger类被加载时。使用所有包装类型的valueOf
也是如此。
通过使用缓存值,它可能会产生更好的空间和时间性能。
它的大约48个字节。但是,这取决于它被称为是否重要。如果性能至关重要,那么BigInteger可能不是最佳解决方案。 –