![java裡的包裝類型,有些拿30K的專家程序員都不按規範寫,坑啊](http://p2.ttnews.xyz/loading.gif)
幫助人群
java軟件工程師、java後端開發、準備面試的java軟件開發、
JDK1.5的新特性:自動裝包/拆包(Autoboxing/unboxing)
自動裝包/拆包大大方便了基本類型數據和它們包裝類地使用。
自動裝包:基本類型自動轉為包裝類.(int >> Integer)
自動拆包:包裝類自動轉為基本類型.(Integer >> int)
在JDK1.5之前,我們總是對集合不能存放基本類型而耿耿於懷,現在自動轉換機制
解決了我們的問題。
包裝類型使用注意
【強制】所有的相同類型的包裝類對象之間值的比較,全部使用 equals 方法比較。
說明:對於 Integer var = ? 在-128 至 127 範圍內的賦值, Integer 對象是在
IntegerCache . cache 產生,會複用已有對象,這個區間內的 Integer 值可以直接使用==進行
判斷,但是這個區間之外的所有數據,都會在堆上產生,並不會複用已有對象,這是一個大坑,
推薦使用 equals 方法進行判斷。
基本數據類型與包裝數據類型的使用標準如下:
1 ) 【強制】所有的 POJO 類屬性必須使用包裝數據類型。
如果你連pojo類是什麼都不知道,傳送門
2 ) 【強制】 RPC 方法的返回值和參數必須使用包裝數據類型。
3 ) 【推薦】所有的局部變量使用基本數據類型。
切記比較大小運算等,用基本數據類型
場景:如按數量排序Integer 轉int 然後計算
4) 基本數據類型效率高於包裝類型 【效率上分析】
如循環批量計算的代碼,切記用基本類型啊。
說明: POJO 類屬性沒有初值是提醒使用者在需要使用時,必須自己顯式地進行賦值,任何
NPE 問題,或者入庫檢查,都由使用者來保證。
正例:數據庫的查詢結果可能是 null ,因為自動拆箱,用基本數據類型接收有 NPE 風險。
反例:比如顯示成交總額漲跌情況,即正負 x %, x 為基本數據類型,調用的 RPC 服務,調用不成功時,返回的是默認值,頁面顯示為 0%,這是不合理的,應該顯示成中劃線。所以包裝數據類型的 null 值,能夠表示額外的信息,如:遠程調用失敗,異常退出。
(部分資料來自:阿里java開發手冊)
包裝類型作用
- 有時候一個函數需要傳遞一個Object變量 而你想傳遞int類型的進去顯然不行,這就要用到包裝類
- 集合不允許存放基本類型數據,只能存放包裝類型
- 基本類型和包裝類之間可以相互轉換
- 基本類型之間相互轉換
- 通過包裝類,String可以和基本類型之間相互轉換
總結代碼的坑
我公司的開發專家目測工資30K,他寫的很多pojo類不用包裝類型,如 門店數量 int,這是有問題的啊。原因上面分析過了。
重要的事說3遍
【強制】所有的 POJO 類屬性必須使用包裝數據類型 【在強調一遍】
【強制】所有的 POJO 類屬性必須使用包裝數據類型 【在強調一遍】
【強制】
所有的 POJO 類屬性必須使用包裝數據類型 【在強調一遍】代碼不規範,坑的就是維護代碼的人。
閱讀更多 程序汪汪 的文章