某天在改findbug所找出的問題時,看到了所謂的Boxed Primitives型態。當初學java並沒拿書從頭開始讀,而是直接從寫code開始,對於型態名稱定義不太了解。後來查詢一下,在此分享給大家primitive types、reference types與boxed primitives的差別:
- primitive types: 原始型態,即int、double、long等不用new就可以用的基本型態。
- reference types: 參考型態,除了boxed primitives外,透過new產生出來的類別,如String、Collection等。
- boxed primitives: 封裝原始型態,int、double、long等原始型態所對應的類別,如Integer、Double、Long等。
Double a = new Double(0); Double b = new Double(0); System.out.println( a == b ); // false System.out.println( a.equals(b) ); // true System.out.println( a == 5 ); // false System.out.println( a == 0 ); // true
因為boxed primitives可能是null,在下面這種情況就會拋出nullpointerException:
留言
張貼留言