BigDecimal bigDecimal = BigDecimal.ONE;

时间:2014-01-25 08:33:13

标签: java

当你做这样的事情时

BigDecimal bigDecimal = BigDecimal.ONE;

为什么bigDecimal 成为新对象

3 个答案:

答案 0 :(得分:8)

在这种情况下,变量(或字段)bigDecimal不会成为新对象。它只是对现有静态字段java.math.BigDecimal.ONE引用的对象的引用。

对象本身(代表1的对象)只创建一次:加载类BigDecimal时。对于Java 7,这是使用new BigDecimal(BigInteger.ONE, 1, 0, 1)完成的。

您所做的任务比使用= new BigDecimal(...)自己创建新对象更好,因为现有对象会被重复使用。

答案 1 :(得分:1)

没有分配新对象。 bigDecimal引用与BigDecimal.ONE相同的对象。

如果你以后做

bigDecimal = bigDecimal.add(BigDecimal.ONE);

对另一个对象(值为2)的引用将分配给bigDecimal。在该语句之后bigDecimalBigDecimal.ONE不再指向同一个对象。

答案 2 :(得分:0)

来自Java文档

  

public static final BigDecimal ONE

值1,刻度为0.

然后 ONE是静态的,并且是同一个类加载器上下文中的相同实例对象