47.了解和使用類庫
書中通過一個產生隨機數的例子來告訴我們使用類庫的幾個好處:
- 通過使用標準類庫,可以充分利用這些編寫標準類庫的專家的知識,以及在你之前的其他人的使用經驗。
- 不必浪費時間為那些與工作不太相關的問題提供特別的解決方案。
- 標準類庫的性能往往隨著時間的推移而不斷提高,無需你做任何努力。
- 可以使自己的代碼融入主流。
在每個重要的發行版本中,都會有許多新的特性被加入到類庫中,所以與這些新特性保持同步是值得的。
48.如果需要精確的答案,請避免使用float和double
對于任何需要精確答案的計算任務,不用使用float或者double,可以使用BigDecimal、int或者long。
BigDecimal有兩個缺點:與基本運算類型相比,很不方便,而且很慢。如果可以接受這兩個缺點的話,就可以使用BigDecimal。
如果性能非常關鍵,并且你又不介意自己記錄十進制小數點,而且涉及的數值又不太大,就可以使用int或者long。如果數值范圍沒有超過9位十進制數字,就可以使用int。如果不超過18位十進制數字,就可以使用long。如果數值可能超過18位數字,就必須使用BigDecimal。
49.基本類型優先于裝箱基本類型
Java一個類型系統由兩部分組成,包含基本類型和引用類型。每個基本類型都有一個對應的引用類型,稱作裝箱基本類型。
基本類型和裝箱基本類型之間的三個區別是:
- 基本類型只有值,而裝箱基本類型則具有與它們的值不同的同一性,因為它是引用類型,有相同的值,卻代表不同的對象。
- 基本類型只有功能完備的值,而裝箱基本類型除了功能完備的值外,還有null。
- 基本類型通常比裝箱基本類型更節省時間和空間。
幾種要使用裝箱基本類型的情況: - 作為集合中的元素、鍵和值。
- 在參數化類型中,必須使用裝箱基本類型作為類型參數。
- 在進行反射的方法調用時,必須使用裝箱基本類型。
總之,可以選擇的時候,基本類型要優于裝箱基本類型。當程序裝箱了基本類型值時,會導致高開銷和不必要的對象創建。
52.通過接口引用對象
如果有合適的接口類型存在,那么對于參數、返回值、變量和域來說,就都應該使用接口類型進行聲明。
如果沒有合適的接口存在,完全可以用類而不是接口來引用對象:
- 值類,更一般地講,如果具體類沒有相關聯的接口,只有通過它的類來引用它的對象。
- 對象屬于一個框架,而框架的基本類型是類,不是接口。
- 類實現了接口,但是它提供了接口中不存在的額外方法。
如果給定的對象具有適當的接口,則用接口引用對象,如果不是,則使用類層次結構中提供了必要功能的最基礎的類。