EffectiveJava-4

1、基本類型優先於裝箱基本類型java

  Java的基本數據類型也叫作內置類型是java語言自己提供的數據類型,是引用其餘類型的基礎。Java的基本數據類型分爲:整數類型、浮點類型、字符類型、布爾類型這四個類型。而每個基本類型又各自對應了一個引用類型,稱爲包裝類型,裝箱基本類型中對應於int 、double、和boolean的是Integer、Double、Boolean。函數

  1.基本類型與裝箱類型的主要區別:spa

    (1)基本類型只有值,而裝箱基本類型則具備它們的值不一樣的同一性,即兩個裝箱基本類型能夠具備相同的值和不一樣的同一性。code

    (2)基本類型只有函數值,而每一個裝箱基本類型則都有一個非函數值,除了它對應基本類型的全部函數值以外,還有個null。對象

    (3)基本類型一般比裝箱類型更節省時間和空間。blog

  2.對裝箱基本類型運用==操做符幾乎老是錯誤的。接口

  3.當在一項操做中混合使用基本類型和裝箱基本類型時,裝箱基本類型就會自動拆箱。若是null對象引用被自動拆箱,就會拋出一個NullPointerException異常。io

  4.使用裝箱基本類型的情景:class

    (1)做爲集合中的元素、鍵和值不可使用基本類型,所以必須使用裝箱基本類型。基礎

    (2)在參數化類型和方法中,必須使用裝箱基本類型做爲類型參數,由於Java不容許使用基本類型。例如,你不能講變量聲明爲ThreadLocal<int>類型,所以必須使用ThreadLocal<Integer>代替。

    (3)在進行反射的方法調用時,必須使用裝箱基本類型。

 2、經過接口引用對象

  1. 若是有合適的接口類型存在,那麼對於參數、返回值、變量和域來講,就都應該使用接口類型聲明。這樣會使程序更加靈活

//合理,使用接口做爲類型
Set<Son> SonSet = new LinkedHashSet<>(); //不合理,使用類做爲類型
LinkedHashSet<Son> sonSet = new LinkedHashSet<>();

  2. 若是沒有合適的接口存在,徹底能夠用類而不是接口來引用對象。

  總結:能使用接口就使用接口,若沒有合適的接口,就使用類層次結構中提供了必要功能的最小的具體類來引用對象。

《EffectiveJava》P229~P234,P234~P236

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息