Java中int和Integer的區別
重要說明:本篇為博主《面試題精選-基礎篇》系列中的一篇,查看系列面試文章請關註我。 Gitee 開源地址:gitee.com/mydb/interv…
nJava
是一種強數據類型的語言,因此所有的屬性必須有一個數據類型。就像麥德龍超市一樣,想要進去購物,先要有一個會員卡才行(刷卡入內)。
PS:Java 10 有瞭局部變量類型推導,可以使用 var
來替代某個具體的數據類型,但在字節碼階段,Java 的變量仍有著明確的數據類型,且局部變量類型推導有著很多限制和不完善之處,也不是目前主流的應用版本,所以這裡不做深入討論。
回到主題,要理解 int
和 Integer
的區別,要先從 Java
的基礎數據類型說起。
1、基本數據類型
在 Java 中,一共有 8 種基本類型(primitive type
),其中有 4 種整型、2 種浮點類型、1 種用於表示 Unicode 編碼的字符類型 char 和 1 種用於表示真假值的 boolean
類型。
- 4 種整型:
int
、short
、long
、byte
- 2 種浮點類型:
float
、double
- 字符類型:
char
- 真假類型:
boolean
基本數據類型是指不可再分的原子數據類型,內存中直接存儲此類型的值,通過內存地址即可直接訪問到數據,並且此內存區域隻能存放這種類型的值,int
就是 Java
中一種常用的基礎數據類型。
2、包裝類及其作用
因為 Java
的設計理念是一切皆是對象,在很多情況下,需要以對象的形式操作,比如 hashCode()
獲取哈希值,或者 getClass()
獲取類等。
2.1包裝類的作用
在 Java
中每個基本數據類型都對應瞭一個包裝類,而 int
對應的包裝類就是 Integer
,包裝類的存在解決瞭基本數據類型無法做到的事情泛型類型參數、序列化、類型轉換、高頻區間數據緩存等問題。
基礎類型 | 包裝類型 |
---|---|
int | Integer |
short | Short |
byte | Byte |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
3、int 和 Integer 的區別
int 和 Integer的區別主要體現在以下幾個方面:
- 數據類型不同:
int
是基礎數據類型,而Integer
是包裝數據類型; - 默認值不同:
int
的默認值是 0,而Integer
的默認值是 null; - 內存中存儲的方式不同:int 在內存中直接存儲的是數據值,而
Integer
實際存儲的是對象引用,當 new 一個 Integer 時實際上是生成一個指針指向此對象; - 實例化方式不同:Integer 必須實例化才可以使用,而 int 不需要;
- 變量的比較方式不同:int 可以使用 == 來對比兩個變量是否相等,而
Integer
一定要使用equals
來比較兩個變量是否相等。
4、總結
Integer 是 int 的包裝類,它們的區別主要體現在 5 個方面:數據類型不同、默認值不同、內存中存儲的方式不同、實例化方式不同以及變量的比較方式不同。包裝類的存在解決瞭基本數據類型無法做到的事情泛型類型參數、序列化、類型轉換、高頻區間數據緩存等問題。
到此這篇關於 Java中int
和Integer
的區別的文章就介紹到這瞭,更多相關 Java中的int和Integer內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!