Java中int和Integer的區(qū)別
前言:
nJava
是一種強(qiáng)數(shù)據(jù)類(lèi)型的語(yǔ)言,因此所有的屬性必須有一個(gè)數(shù)據(jù)類(lèi)型。就像麥德龍超市一樣,想要進(jìn)去購(gòu)物,先要有一個(gè)會(huì)員卡才行(刷卡入內(nèi))。?
PS:Java 10 有了局部變量類(lèi)型推導(dǎo),可以使用var
來(lái)替代某個(gè)具體的數(shù)據(jù)類(lèi)型,但在字節(jié)碼階段,Java 的變量仍有著明確的數(shù)據(jù)類(lèi)型,且局部變量類(lèi)型推導(dǎo)有著很多限制和不完善之處,也不是目前主流的應(yīng)用版本,所以這里不做深入討論。
回到主題,要理解 int
和 Integer
的區(qū)別,要先從Java
的基礎(chǔ)數(shù)據(jù)類(lèi)型說(shuō)起。
1、基本數(shù)據(jù)類(lèi)型
在 Java 中,一共有 8 種基本類(lèi)型(primitive type
),其中有 4 種整型、2 種浮點(diǎn)類(lèi)型、1 種用于表示 Unicode 編碼的字符類(lèi)型 char 和 1 種用于表示真假值的 boolean
類(lèi)型。
- 4 種整型:
int
、short
、long
、byte
- 2 種浮點(diǎn)類(lèi)型:
float
、double
- 字符類(lèi)型:
char
- 真假類(lèi)型:
boolean
基本數(shù)據(jù)類(lèi)型是指不可再分的原子數(shù)據(jù)類(lèi)型,內(nèi)存中直接存儲(chǔ)此類(lèi)型的值,通過(guò)內(nèi)存地址即可直接訪(fǎng)問(wèn)到數(shù)據(jù),并且此內(nèi)存區(qū)域只能存放這種類(lèi)型的值,int
就是 Java
中一種常用的基礎(chǔ)數(shù)據(jù)類(lèi)型。
2、包裝類(lèi)及其作用
因?yàn)?Java
的設(shè)計(jì)理念是一切皆是對(duì)象,在很多情況下,需要以對(duì)象的形式操作,比如 hashCode()
獲取哈希值,或者 getClass()
獲取類(lèi)等。?
2.1包裝類(lèi)的作用
在 Java
中每個(gè)基本數(shù)據(jù)類(lèi)型都對(duì)應(yīng)了一個(gè)包裝類(lèi),而 int
對(duì)應(yīng)的包裝類(lèi)就是 Integer
,包裝類(lèi)的存在解決了基本數(shù)據(jù)類(lèi)型無(wú)法做到的事情泛型類(lèi)型參數(shù)、序列化、類(lèi)型轉(zhuǎn)換、高頻區(qū)間數(shù)據(jù)緩存等問(wèn)題。?
基礎(chǔ)類(lèi)型 | 包裝類(lèi)型 |
---|---|
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)在以下幾個(gè)方面:
- 數(shù)據(jù)類(lèi)型不同:
int
是基礎(chǔ)數(shù)據(jù)類(lèi)型,而Integer
是包裝數(shù)據(jù)類(lèi)型; - 默認(rèn)值不同:
int
的默認(rèn)值是 0,而Integer
的默認(rèn)值是 null; - 內(nèi)存中存儲(chǔ)的方式不同:int 在內(nèi)存中直接存儲(chǔ)的是數(shù)據(jù)值,而
Integer
實(shí)際存儲(chǔ)的是對(duì)象引用,當(dāng) new 一個(gè) Integer 時(shí)實(shí)際上是生成一個(gè)指針指向此對(duì)象; - 實(shí)例化方式不同:Integer 必須實(shí)例化才可以使用,而 int 不需要;
- 變量的比較方式不同:int 可以使用 == 來(lái)對(duì)比兩個(gè)變量是否相等,而
Integer
一定要使用equals
來(lái)比較兩個(gè)變量是否相等。
4、總結(jié)
Integer 是 int 的包裝類(lèi),它們的區(qū)別主要體現(xiàn)在 5 個(gè)方面:數(shù)據(jù)類(lèi)型不同、默認(rèn)值不同、內(nèi)存中存儲(chǔ)的方式不同、實(shí)例化方式不同以及變量的比較方式不同。包裝類(lèi)的存在解決了基本數(shù)據(jù)類(lèi)型無(wú)法做到的事情泛型類(lèi)型參數(shù)、序列化、類(lèi)型轉(zhuǎn)換、高頻區(qū)間數(shù)據(jù)緩存等問(wèn)題。?
到此這篇關(guān)于 Java中int
和Integer
的區(qū)別的文章就介紹到這了,更多相關(guān) Java中的int和Integer內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java測(cè)試框架Mockito的簡(jiǎn)明教程
這篇文章主要介紹了Java測(cè)試框架Mockito的簡(jiǎn)明教程,Mock 測(cè)試是單元測(cè)試的重要方法之一。本文介紹了基于 Java 語(yǔ)言的 Mock 測(cè)試框架 – Mockito 的使用。,需要的朋友可以參考下2019-06-06Java設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解適配器模式
適配器模式(Adapter?Pattern)是作為兩個(gè)不兼容的接口之間的橋梁。這種類(lèi)型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個(gè)獨(dú)立接口的功能2022-04-04struts2.3.24+spring4.1.6+hibernate4.3.11+mysql5.5.25開(kāi)發(fā)環(huán)境搭建圖文
這篇文章主要介紹了struts2.3.24+spring4.1.6+hibernate4.3.11+mysql5.5.25開(kāi)發(fā)環(huán)境搭建圖文教程,感興趣的小伙伴們可以參考一下2016-06-06BCryptPasswordEncoder加密與MD5加密的區(qū)別及說(shuō)明
這篇文章主要介紹了BCryptPasswordEncoder加密與MD5加密的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08mybatis中映射文件(mapper)中的使用規(guī)則
這篇文章主要介紹了mybatis中映射文件(mapper)中的使用規(guī)則,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11