BigDecimal 的add方法,结果竟然没变??

本文深入探讨了Java中BigDecimal类的加法操作原理,通过代码示例解析了a.add(b)方法的行为,即返回两个数相加的结果,而非改变原始对象的值。详细解释了BigDecimal.add()方法的内部实现,包括如何处理不同规模的加数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 @Test
    public void testBigDecimal(){
       BigDecimal decimal1=new BigDecimal("0");
       BigDecimal decimal2=new BigDecimal(2);
       decimal1.add(decimal2);
       System.out.println(decimal1.add(decimal1));
       System.out.println(decimal1.add(decimal2));
   }

结果输出:

神不神奇,意不意外,a.add(b) ,a的值没变

而是a.add 方法返回  a+b的值

具体看源码:

 /**
     * Returns a {@code BigDecimal} whose value is {@code (this +
     * augend)}, and whose scale is {@code max(this.scale(),
     * augend.scale())}.
     *
     * @param  augend value to be added to this {@code BigDecimal}.
     * @return {@code this + augend}  (返回和)
     */
    public BigDecimal add(BigDecimal augend) {
        if (this.intCompact != INFLATED) {
            if ((augend.intCompact != INFLATED)) {
                return add(this.intCompact, this.scale, augend.intCompact, augend.scale);
            } else {
                return add(this.intCompact, this.scale, augend.intVal, augend.scale);
            }
        } else {
            if ((augend.intCompact != INFLATED)) {
                return add(augend.intCompact, augend.scale, this.intVal, this.scale);
            } else {
                return add(this.intVal, this.scale, augend.intVal, augend.scale);
            }
        }
    }

可以看到是return 相加之后的结果,而不是将结果放在当前对象的属性中.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值