Java中int和Integer的區(qū)別
前言:
nJava是一種強數(shù)據(jù)類型的語言,因此所有的屬性必須有一個數(shù)據(jù)類型。就像麥德龍超市一樣,想要進(jìn)去購物,先要有一個會員卡才行(刷卡入內(nèi))。?
PS:Java 10 有了局部變量類型推導(dǎo),可以使用var來替代某個具體的數(shù)據(jù)類型,但在字節(jié)碼階段,Java 的變量仍有著明確的數(shù)據(jù)類型,且局部變量類型推導(dǎo)有著很多限制和不完善之處,也不是目前主流的應(yīng)用版本,所以這里不做深入討論。
回到主題,要理解 int和 Integer的區(qū)別,要先從Java的基礎(chǔ)數(shù)據(jù)類型說起。
1、基本數(shù)據(jù)類型
在 Java 中,一共有 8 種基本類型(primitive type),其中有 4 種整型、2 種浮點類型、1 種用于表示 Unicode 編碼的字符類型 char 和 1 種用于表示真假值的 boolean類型。
- 4 種整型:
int、short、long、byte - 2 種浮點類型:
float、double - 字符類型:
char - 真假類型:
boolean
基本數(shù)據(jù)類型是指不可再分的原子數(shù)據(jù)類型,內(nèi)存中直接存儲此類型的值,通過內(nèi)存地址即可直接訪問到數(shù)據(jù),并且此內(nèi)存區(qū)域只能存放這種類型的值,int 就是 Java中一種常用的基礎(chǔ)數(shù)據(jù)類型。
2、包裝類及其作用
因為 Java的設(shè)計理念是一切皆是對象,在很多情況下,需要以對象的形式操作,比如 hashCode()獲取哈希值,或者 getClass()獲取類等。?
2.1包裝類的作用
在 Java中每個基本數(shù)據(jù)類型都對應(yīng)了一個包裝類,而 int對應(yīng)的包裝類就是 Integer,包裝類的存在解決了基本數(shù)據(jù)類型無法做到的事情泛型類型參數(shù)、序列化、類型轉(zhuǎn)換、高頻區(qū)間數(shù)據(jù)緩存等問題。?
| 基礎(chǔ)類型 | 包裝類型 |
|---|---|
| int | Integer |
| short | Short |
| byte | Byte |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
3、int 和 Integer 的區(qū)別
int 和 Integer的區(qū)別主要體現(xiàn)在以下幾個方面:
- 數(shù)據(jù)類型不同:
int是基礎(chǔ)數(shù)據(jù)類型,而Integer是包裝數(shù)據(jù)類型; - 默認(rèn)值不同:
int的默認(rèn)值是 0,而Integer的默認(rèn)值是 null; - 內(nèi)存中存儲的方式不同:int 在內(nèi)存中直接存儲的是數(shù)據(jù)值,而
Integer實際存儲的是對象引用,當(dāng) new 一個 Integer 時實際上是生成一個指針指向此對象; - 實例化方式不同:Integer 必須實例化才可以使用,而 int 不需要;
- 變量的比較方式不同:int 可以使用 == 來對比兩個變量是否相等,而
Integer一定要使用equals來比較兩個變量是否相等。
4、總結(jié)
Integer 是 int 的包裝類,它們的區(qū)別主要體現(xiàn)在 5 個方面:數(shù)據(jù)類型不同、默認(rèn)值不同、內(nèi)存中存儲的方式不同、實例化方式不同以及變量的比較方式不同。包裝類的存在解決了基本數(shù)據(jù)類型無法做到的事情泛型類型參數(shù)、序列化、類型轉(zhuǎn)換、高頻區(qū)間數(shù)據(jù)緩存等問題。?
到此這篇關(guān)于 Java中int和Integer的區(qū)別的文章就介紹到這了,更多相關(guān) Java中的int和Integer內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決springboot 無法配置多個靜態(tài)路徑的問題
這篇文章主要介紹了解決springboot 無法配置多個靜態(tài)路徑的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Spring?Boot如何配置yml配置文件定義集合、數(shù)組和Map
這篇文章主要介紹了Spring?Boot?優(yōu)雅配置yml配置文件定義集合、數(shù)組和Map,包括Spring?Boot?yml配置文件定義基本數(shù)據(jù)類型和引用數(shù)據(jù)類型的方式,需要的朋友可以參考下2023-10-10
關(guān)于java String中intern的深入講解
這篇文章主要給大家介紹了關(guān)于java String中intern的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

