Java 提供兩大型別家族:原始型別與參考型別,並為每個原始型別提供封裝類別。二者在記憶體佈局、語義行為、預設值、方法呼叫等方面存在本質差異,搞混將導致難以診斷的邏輯錯誤。
| 原始型別 | 封裝類別 | 位元大小 |
|---|---|---|
| boolean | Boolean | 1 位元(JVM 以 32 位元儲存) |
| byte | Byte | 8 |
| char | Character | 16 |
| short | Short | 16 |
| int | Integer | 32 |
| long | Long | 64 |
| float | Float | 32 |
| double | Double | 64 |
new;參考型別需 new 配置堆疊記憶體。5.hashCode() 編譯錯誤);封裝物件可(new Integer(5).hashCode())。\u0000;參考型別為 null。Point x = new Point(0,0);
Point y = new Point(1,1);
x = y; // x、y 指向同一物件
x.setLocation(5,5); // y 也變成 (5,5)!
指派運算子 = 對參考型別僅複製位址,產生別名。原始型別則複製數值本身,互不干擾。此差異是新手最易踩的坑。
null 語義、放入集合、或呼叫方法。equals(),勿用 ==。