java面試題之int和Integer的區(qū)別

int和Integer的區(qū)別

1、Integer是int的包裝類,int則是java的一種基本數(shù)據(jù)類型

2、Integer變量必須實例化后才能使用,而int變量不需要

3、Integer實際是對象的引用,當(dāng)new一個Integer時,實際上是生成一個指針指向此對象;而int則是直接存儲數(shù)據(jù)值

4、Integer的默認(rèn)值是null,int的默認(rèn)值是0

延伸:

關(guān)于Integer和int的比較

1、由于Integer變量實際上是對一個Integer對象的引用,所以兩個通過new生成的Integer變量永遠(yuǎn)是不相等的(因為new生成的是兩個對象,其內(nèi)存地址不同)。

Integer i =newInteger(100);

Integer j =newInteger(100);

System.out.print(i == j); //false

2、Integer變量和int變量比較時,只要兩個變量的值是向等的,則結(jié)果為true(因為包裝類Integer和基本數(shù)據(jù)類型int比較時,java會自動拆包裝為int,然后進(jìn)行比較,實際上就變?yōu)閮蓚€int變量的比較)

Integer i = newInteger(100);

int j =100;

System.out.print(i == j); //true

3、非new生成的Integer變量和new Integer()生成的變量比較時,結(jié)果為false。(因為非new生成的Integer變量指向的是java常量池中的對象,而new Integer()生成的變量指向堆中新建的對象,兩者在內(nèi)存中的地址不同)

Integer i =newInteger(100);

Integer j =100;

System.out.print(i == j); //false

4、對于兩個非new生成的Integer對象,進(jìn)行比較時,如果兩個變量的值在區(qū)間-128到127之間,則比較結(jié)果為true,如果兩個變量的值不在此區(qū)間,則比較結(jié)果為false

Integer i =100;

Integer j =100;

System.out.print(i == j); //true

Integer i =128;

Integer j =128;

System.out.print(i == j); //false

對于第4條的原因:

java在編譯Integer i = 100 ;時,會翻譯成為Integer i = Integer.valueOf(100);,而java API中對Integer類型的valueOf的定義如下:

publicstaticIntegervalueOf(int i){

assert IntegerCache.high >=127;

if (i >= IntegerCache.low && i <= IntegerCache.high){

return IntegerCache.cache[i + (-IntegerCache.low)];

}

returnnew Integer(i);

}

java對于-128到127之間的數(shù),會進(jìn)行緩存,Integer i = 127時,會將127進(jìn)行緩存,下次再寫Integer j = 127時,就會直接從緩存中取,就不會new了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,811評論 18 399
  • 一、 1、請用Java寫一個冒泡排序方法 【參考答案】 public static void Bubble(int...
    獨云閱讀 1,504評論 0 6
  • 小編費力收集:給你想要的面試集合 1.C++或Java中的異常處理機(jī)制的簡單原理和應(yīng)用。 當(dāng)JAVA程序違反了JA...
    八爺君閱讀 5,236評論 1 114
  • 有一位搞人力資源的朋友跟我講啊,怎么樣用最短的時間判斷一個人是不是靠譜兒呢? 哎!他一般看的是三件事: 第一件呢,...
    楊心武閱讀 691評論 1 0
  • 2017年12月12日,在這個全民狂歡購買節(jié)里,我把你從寵物店接了回來。在此之前已經(jīng)心心念念你很久了,每天看著寵物...
    _Yulia_閱讀 278評論 0 0

友情鏈接更多精彩內(nèi)容