我必须在项目中多次声明和初始化BigDecimal包装器对象.然后哪个更好的方法由Java代码:
BigDecimal num=new BigDecimal("123");
Run Code Online (Sandbox Code Playgroud)
或者在NumberUtils课堂上已经有一个静态方法可用
public static BigInteger createBigInteger(String str) {
if (str == null) {
return null;
}
return new BigInteger(str);
}
BigDecimal num=NumberUtils.createBigInteger("123");
Run Code Online (Sandbox Code Playgroud)
请告诉我,这是更好的方法,因为我们比较了性能(内存和速度).
Jon*_*eet 19
显然,createBigInteger正在做更多的工作 - 当你知道参数值无论如何都不为null时,它会检查是否为null.这只是一小部分额外的工作 - 几乎肯定在现实中无关紧要.
如果这确实是一个性能问题,我会感到惊讶- 你是否认为这是你代码中的瓶颈?如果没有,写下最可读的代码 - 对我来说这将是构造函数调用.然后确定您的性能要求,并针对它们测试整个系统.如果性能不佳,请编写更多测试或使用分析器来确定导致问题的区域.
另一种选择是使用BigDecimal(int)构造函数 - 为什么还要解析字符串呢?
BigDecimal num = new BigDecimal(123);
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您甚至可以将其作为常量,因此您可以重用该对象:
private static final BigDecimal DEFAULT_FOOBAR_VALUE = new BigDecimal(123);
// In a method or whatever...
BigDecimal num = DEFAULT_FOOBAR_VALUE;
Run Code Online (Sandbox Code Playgroud)
除了表现之外,我认为这更清楚,因为它表明了常数的原因.