Integer和int的區(qū)別實(shí)例詳解
Integer和int最本質(zhì)的區(qū)別就是:Integer是封裝類,int是基本數(shù)據(jù)類型(這是廢話)。
本文是希望能對(duì)Integer和int的區(qū)別進(jìn)行更詳細(xì)的對(duì)比說明并加以舉例
Integer和int的區(qū)別
- Integer的默認(rèn)初始值是null,而int的初始值是int,也就是說Integer能夠區(qū)分出未賦值和值為0的區(qū)別,而int卻不能表達(dá)出未賦值的情況,所以int不適合作為web層的表單數(shù)據(jù)填寫。(例如:一個(gè)學(xué)生參加考試且成績(jī)?yōu)?,和沒參加考試成績(jī)?yōu)閚ull)
- Integer是類,自帶很多方法供使用,而int只能做一些基本的±*/=的操作
- Integer變量必須先實(shí)例化,int變量直接使用
關(guān)于Integer
在說明Integer的時(shí)候有幾個(gè)小知識(shí)點(diǎn)提一下:
- 拆箱和裝箱
- 什么時(shí)候拆箱:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型做運(yùn)算時(shí)什么時(shí)候裝箱:基本數(shù)據(jù)類型賦值給引用數(shù)據(jù)類型時(shí)
- “==”和“equals()”
- “==”:在比較基本數(shù)據(jù)類型時(shí)比較的是數(shù)值,比較引用數(shù)據(jù)類型時(shí)比較的是對(duì)象堆內(nèi)存地址equals():在Object類中是通過“==”來比較的,但大多時(shí)候,我們會(huì)將其進(jìn)行重寫
- 在Integer類中,“==”用來比較對(duì)象地址是否相同,而equals()被重寫,他會(huì)先判斷參數(shù)中對(duì)象是否為Integer類型,如果是則判斷值是否相同。
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
幾點(diǎn)說明
- Integer變量和int變量比較值時(shí),只要值是相等的,結(jié)果就為true(因?yàn)镴ava會(huì)自動(dòng)拆箱,將Integer拆為int,在進(jìn)行比較)
Integer a = new Integer(1); int b = 1; System.out.println(a == b);//true
兩個(gè)通過new生成的Integer變量是永遠(yuǎn)不相等的(因?yàn)閚ew生成的是兩個(gè)新對(duì)象,內(nèi)存地址不同)
Integer a = new Integer(1); Integer b = new Integer(1); System.out.println(a == b);//false
兩個(gè)通過非new產(chǎn)生的Integer變量也是不相等的(因?yàn)榉莕ew產(chǎn)生的Integer變量指向Java常量池中的對(duì)象,而new產(chǎn)生的變量指向堆中新建對(duì)象,他倆所在的內(nèi)存地址不同)
Integer a = new Integer(1); Integer b = 1; System.out.println(a == b);//false
兩個(gè)非new產(chǎn)生的Integer變量比較:當(dāng)值在-128~127之間時(shí),結(jié)果為true,當(dāng)值在此區(qū)間外結(jié)果為false(因?yàn)镮nteger常量池的存儲(chǔ)范圍是[-128,127],在此范圍內(nèi)是直接存儲(chǔ)于常量池的,都指向同一個(gè)地址。在此范圍外的數(shù)需要通過堆內(nèi)存創(chuàng)建一個(gè)新對(duì)象。比如Integer a=1會(huì)將1寫入緩存中,下次再寫Integer b=1時(shí)會(huì)直接從緩存中去,不用new了,所以取到的地址也是相同的)
Integer a = 1; Integer b = 1; System.out.println(a == b);//true Integer a = 129; Integer b = 129; System.out.println(a == b);//false
到此這篇關(guān)于Integer和int的區(qū)別實(shí)例詳解的文章就介紹到這了,更多相關(guān)Integer和int的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis游標(biāo)Cursor在Oracle數(shù)據(jù)庫上的測(cè)試方式
這篇文章主要介紹了MyBatis游標(biāo)Cursor在Oracle數(shù)據(jù)庫上的測(cè)試方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
IntelliJ IDEA Tomcat控制臺(tái)中文亂碼問題的四種解決方案
這篇文章主要給大家分享了4種方法完美解決IntelliJ IDEA Tomcat控制臺(tái)中文亂碼問題,文中有詳細(xì)的圖文介紹,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-08-08
使用spring框架ResponseEntity實(shí)現(xiàn)文件下載
這篇文章主要介紹了使用spring框架ResponseEntity實(shí)現(xiàn)文件下載,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
淺談Java中隨機(jī)數(shù)的幾種實(shí)現(xiàn)方式
這篇文章主要介紹了Java中隨機(jī)數(shù)的幾種實(shí)現(xiàn)方式,從最簡(jiǎn)單的Math.random到多線程的并發(fā)實(shí)現(xiàn)都在本文所列之中,需要的朋友可以參考下2015-07-07
MyBatis-Plus自定義SQL和復(fù)雜查詢的實(shí)現(xiàn)
MyBatis-Plus增強(qiáng)了MyBatis的功能,提供注解和XML兩種自定義SQL方式,支持復(fù)雜查詢?nèi)缍啾黻P(guān)聯(lián)、動(dòng)態(tài)分頁等,通過注解如@Select、@Insert、@Update、@Delete實(shí)現(xiàn)CRUD操作,本文就來介紹一下,感興趣的可以了解一下2024-10-10
spring通過filter,Interceptor統(tǒng)一處理ResponseBody的返回值操作
這篇文章主要介紹了spring通過filter,Interceptor統(tǒng)一處理ResponseBody的返回值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09

