2015-02-23 33 views
0

我必須分配0到creditBalacne現在我們在這裏可以得到雙向Java BigDecimal初始化如何以及哪一種更好的方法?

private BigDecimal creditBalance = new BigDecimal(0); 

等方式

private BigDecimal creditBalance1 = BigDecimal.ZERO; 

哪一個更好,爲什麼?以什麼方式開發人員更喜歡?

+3

第二個通常是優選的。它會爲您提供存儲在BigDecimal值緩存中的實例;從而避免創建一個新的對象。 – 2015-02-23 08:51:31

+0

在使用第二種方法後修改'creditBalance1'會拋出一個錯誤,因爲'ZERO'是最終的對象嗎? @ZouZou – 2015-02-23 08:58:41

+0

@boxed__l不,'creditBalance1'不是'final','BigDecimal'實例是不可變的,所以你將不得不重新分配你的操作結果。無論如何,這個變量。 – 2015-02-23 09:04:37

回答

1

第一選項將創建新的對象(以及後來垃圾)

如果性能問題,第二個選擇是優選的。如果有疑問,請使用最清晰,最簡單的方法。

BTW另一種選擇是使用

private BugDecimal creditBalance1 = BigDecimal.valueOf(0); 

這將使用的值的高速緩存,其中可能的(如果不是創建新的對象)

+0

private BigDecimal creditBalance1 = BigDecimal.ZERO;會在任何情況下通過例外如果緩存不可用,它會拋出異常?你如何定義另一種方法? – 2015-02-23 09:08:27

+0

@subodh你能澄清你的意思嗎?拋出的異常是什麼?爲什麼緩存不可用? – 2015-02-23 09:09:48

+0

正如你提到的另一種方式是什麼問題使用像這樣的私人BigDecimal creditBalance1 = BigDecimal.ZERO; – 2015-02-23 09:13:53

1

在事情的大計劃中,你使用哪一個並不重要。 但是既然已經有一個常數爲零,你不妨使用它。