代码一:
BigDecimal theory_score = new BigDecimal(0.0);
theory_score.add(bdJobContentAnswer.getScore());
//bdJobContentAnswer.getScore 为20.0
结果:theory_score = 0.0
代码二:
BigDecimal theory_score = new BigDecimal(0.0);
theory_score = theory_score.add(bdJobContentAnswer.getScore());
结果:theory_score = 20.0
原因:通过看BigDecimal.add()
方法的源码发现
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);
}
}
}
add方法返回的是一个BigDecimal
对象,所以是不能改变自身值得,只能用一个新对象去接收add
方法改变后对象