3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
示例2很好,但您根本不需要局部變量,我認(rèn)為它們會(huì)降低方法的可讀性。我會(huì)這么做的
public BigDecimal addTwo(final BigDecimal bigDecimal) { return bigDecimal.add(BigDecimal.valueOf(2));}
如果我想添加另一個(gè)BigDecimal怎么辦?“我必須返回
bigDecimal.add(BigDecimal.valueOf(2).add(BigDecimal.valueOf(3))
?我認(rèn)為它不那么可讀。
如果要添加兩次(或多個(gè)常量),那么將常量提取為常量可能是有意義的。喜歡,
private static final BigDecimal TWO = BigDecimal.valueOf(2);private static final BigDecimal THREE = BigDecimal.valueOf(3); public static BigDecimal addTwoAndThree(final BigDecimal bigDecimal) { return TWO.add(THREE).add(bigDecimal);}

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
看來你不明白引用的概念。
當(dāng)你有這個(gè):
BigDecimal incoming = new BigDecimal(2);addTwo(incoming);... public BigDecimal addTwo(BigDecimal bigDecimal) { bigDecimal = bigDecimal.add(new BigDecimal(2));}
事情是:在該方法結(jié)束后incoming
仍然是2!
該add()
調(diào)用創(chuàng)建一個(gè)新的 BigDecimal對(duì)象,然后變量bigDecimal指向該新對(duì)象。
但參考incoming
仍指向舊對(duì)象!
簡而言之:方法參數(shù)的關(guān)鍵字final 不完全符合你的想法。其唯一目的是阻止您重新分配該參數(shù)/值。所以你真的想了解對(duì)象和引用之間的區(qū)別。然后關(guān)于通過引用傳遞。
添加回答
舉報(bào)