目录
3.1 使用add()、subtract()、multiply()、divide()等方法无效果
一、特性介绍
二、方法介绍
三、场景案例
3.1 使用add()、subtract()、multiply()、divide()等方法无效果
不出意外的话,读者是这么使用这些方法的:
number1.add(new BigDecimal(number2));
这样会发现,执行过后number1并没有发生变化,但在debugger中可以观察到增加了number2。
查看源码:
可以发现,源码中并没有对形参的引用进行直接的操作,而是返回了重载的add方法,并且没有进一步传入augend。换言之,引用并不会执行加法操作。
而返回的是新的BigDecimal对象,因此,如果我们想实现 x = x+1 的需求,则需要使用一个新的引用来接收BigDecimal的运算结果,即:
number1 = number1.add(new BigDecimal(number2));
至于为什么直接使用add不报错,当然是不会报错的,实际上还是执行了运算结果的封装,只是丢失了引用,在下一次GC大概率会被回收掉。
未完,待更新