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