java里的包裝類型,有些拿30K的專家程式設計師都不按規範寫,坑啊

java裡的包裝類型,有些拿30K的專家程序員都不按規範寫,坑啊

幫助人群

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 類屬性必須使用包裝數據類型 【在強調一遍】

代碼不規範,坑的就是維護代碼的人。


分享到:


相關文章: