当你做这样的事
BigDecimal bigDecimal = BigDecimal.ONE;为什么bigDecimal 成为一个新的对象?
发布于 2014-01-25 08:35:48
在这种情况下,变量(或字段) bigDecimal不会成为一个新对象。它只是对现有静态字段java.math.BigDecimal.ONE引用的对象的引用。
对象本身(表示1的对象)只创建一次:当类BigDecimal被加载时。对于Java7,这是使用new BigDecimal(BigInteger.ONE, 1, 0, 1)完成的。
您所做的分配要比使用= new BigDecimal(...)自己创建一个新对象要好,因为现有的对象是重用的。
发布于 2014-01-25 08:36:17
没有分配新对象。bigDecimal指的是与BigDecimal.ONE相同的对象。
如果你晚些时候
bigDecimal = bigDecimal.add(BigDecimal.ONE);对另一个对象(其值为2)的引用将分配给bigDecimal。在该语句之后,bigDecimal和BigDecimal.ONE不再指向同一个对象。
发布于 2014-01-25 08:37:54
来自Java文档
公共静态最终BigDecimal 1
值1,刻度为0。
然后,1是静态的,是同一个类加载器上下文上的同一个实例对象。
https://stackoverflow.com/questions/21348400
复制相似问题