1. 程式人生 > >BigDecimal 的add方法,結果竟然沒變??

BigDecimal 的add方法,結果竟然沒變??

 @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 一個值