BigDecimal.ONE和新BigDecimal(“1”)之间的区别

时间:2012-03-30 11:24:53

标签: java

以下两行代码有什么区别?

BigDecimal one = new BigDecimal("1");
BigDecimal two = BigDecimal.ONE;

这两条线路是否相同?

谢谢!

2 个答案:

答案 0 :(得分:14)

不,它们并不完全相同 - 第一个在每次执行时分配一个新对象(并且还必须解析该值);第二个将每次使用对同一现有对象的引用。

由于BigDecimal是不可变的,您可以自由地重用现有实例 - 因此有必要参考一个“预先设定”的对象,您可以在其中知道该值是什么。

答案 1 :(得分:2)

BigDecimal.ONE是一个预先扫描的对象,与

相比,它在内存利用率方面更有效

BigDecimal one = new BigDecimal(" 1");

因为在这一行中它首先创建一个实例,然后解析字符串" 1"然后分配。

而BigDecimal.ONE就像一个常量,会给你直接的价值。

希望这有帮助!