BigDecimal为什么不能这样赋值BigDecimal a=new BigDecimal(7); BigDecimal b=a;
时间: 2023-11-21 20:56:49 浏览: 72
BigDecimal的计算
在Java中,BigDecimal是不可变的对象,这意味着一旦创建了一个BigDecimal对象,就不能更改它的值。因此,如果您使用BigDecimal a = new BigDecimal(7)创建一个BigDecimal对象,那么a将指向一个值为7的BigDecimal对象。如果您使用BigDecimal b = a将a赋值给b,那么b将指向与a相同的BigDecimal对象,即值为7的BigDecimal对象。这意味着,如果您更改a的值,b的值也会更改,因为它们指向同一个对象。因此,为了避免这种情况,您应该使用BigDecimal b = new BigDecimal(a.toString())来创建一个新的BigDecimal对象,该对象具有与a相同的值,但是指向不同的对象。
以下是一个例子:
```java
BigDecimal a = new BigDecimal(7);
BigDecimal b = new BigDecimal(a.toString());
System.out.println("a = " + a); // 输出:a = 7
System.out.println("b = " + b); // 输出:b = 7
a = a.add(new BigDecimal(3));
System.out.println("a = " + a); // 输出:a = 10
System.out.println("b = " + b); // 输出:b = 7
```
阅读全文