日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

你知道Integer和int的区别吗

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你知道Integer和int的区别吗 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近小康面試,突然被面試官問道,說一下Integer和int的區別。額…可能平時就知道寫一些業務代碼以及看一些自己覺得比較高大上的東西,包括面試也看的一些Spring源碼等,對于這種java特別基礎的東西反而忽略了,導致在面試的時候突然被問到這種基礎類的題目反而不知道怎么回答了。哎,還是乖乖再看看底層基礎,順帶記錄一下把。另外給自己打個廣告,樓主開發的文青樂園知識學習系統初步已搭建,大家可以體驗,然后有問題隨時提出來,點擊文青樂園即可前往,后期也會將文章逐步遷移過去,歡迎大家試用。

基本概念(重要)

  • Integer 是 int 的包裝類,int 則是 java 的一種基本數據類型;
  • Integer 變量必須實例化后才能使用,而int變量不需要;
  • Integer 實際是對象的引用,當new一個 Integer時,實際上是生成一個指針指向此對象;而 int 則是直接存儲數據值;
  • Integer的默認值是null,int的默認值是0。

拓展

基于以上的一些概念,這里我們拓展一下,對于Integer包裝類型與int基本數據類型之間數值相互比較的結果進行一下說明,這個也可能在面試當中會被問到。

new Integer()與new Integer()的比較

下面的代碼大家覺得結果是什么呢?大家可以先自己想一想然后再繼續往下看。

public static boolean comp(){Integer i1=new Integer(10);Integer i2=new Integer(10);return i1==i2;}

Integer 變量必須實例化后才能使用,也就是我們必須new Integer()之后才可以使用,而我們知道,任何對象只要是new出來的都會放在堆內存中,同時該變量存儲指向堆內存的地址,只要new出來的對象就是一個新對象,也就是說i1和i2指向的兩個不同的對象,為了證明這一點,我們通過javap -v 看一下字節碼,也能看的很清楚。

因為是兩個不同的對象,所以上面的結果是false。

Integer與new Integer()的比較

再看下面的代碼,Integer變量 和 new Integer() 變量比較

public static boolean comp1(){Integer i1=new Integer(10);Integer i2=10;return i1==i2;}

因為 Integer變量 指向的是 java 常量池中的對象,而 new Integer() 的變量指向堆中新建的對象,兩者在內存中的地址不同,兩者比較的話永遠為 false。

Integer與Integer的比較

public static void comp2(){Integer i = 100;Integer j = 100;System.out.print(i == j);Integer m = 128;Integer n = 128;System.out.print(m == n);}

這里為什么會列舉兩個呢?大家往下看。
其實Integer i = 100 在編譯時,會翻譯成為 Integer i = Integer.valueOf(100),而 java 對 Integer類型的 valueOf 的定義如下:

這里的low和high分別為-128和127。

閱讀源碼我們可以很清晰的看到,java對于-128到127之間的數,會進行緩存,所以 當Integer i 的值在 -128到127之間時,會將值進行緩存,下次再取Integer j(值在 -128到127之間)時,就會直接從緩存中取,就不會new了,這樣拿到的就是同一個對象。當Integer i 的值不在 -128到127之間時,每次都會重新new Integer(),那么每次都會是不同的對象。所以看到這里,大家應該知道上面的兩個不同的比較的結果是什么了把,前者為true,后者為false。

int 變量 與 Integer、 new Integer() 比較

int 變量 與 Integer、 new Integer() 比較時,只要兩個的值是相等,則為true,需要說明的是包裝類Integer 和 基本數據類型int 比較時,java會自動拆包裝為int ,然后進行比較,實際上就變為兩個int變量的比較。

Integer i = new Integer(10); //自動拆箱為 int i=10; 此時,相當于兩個int的比較 int j = 10; System.out.print(i == j); //true

看完了以上的,大家看看下面的比較大家能否寫出正確的結果。

public static void comp3(){int i = 128;Integer i2 = 128;Integer i3 = new Integer(128);System.out.println("i == i2 = " + (i == i2)); // Integer會自動拆箱為int,所以為trueSystem.out.println("i == i3 = " + (i == i3)); // true,理由同上Integer i4 = 127;// 編譯時被翻譯成:Integer i4 = Integer.valueOf(127);Integer i5 = 127;System.out.println("i4 == i5 = " + (i4 == i5));// trueInteger i6 = 128;Integer i7 = 128;System.out.println("i6 == i7 = " + (i6 == i7));// falseInteger i8 = new Integer(127);System.out.println("i5 == i8 = " + (i5 == i8)); // falseInteger i9 = new Integer(128);Integer i10 = new Integer(128);System.out.println("i9 == i10 = " + (i9 == i10)); // false} public static void comp4(){Integer a = new Integer(127), b = new Integer(128);int c = 127, d = 128, dd = 128;Integer e = 127, ee = 127, f = 128, ff = 128;System.out.println(a == b); // false 因為a,b都是new出來的對象,地址不同所以為falseSystem.out.println(a == c); // true a會自動拆箱為int類型System.out.println(a == e); // false 指向的地址不同a是new出來的System.out.println(e == c); // true e會自動拆箱為int類型System.out.println(e == ee);// true Integer對 處于-128到127范圍之間,指向了同一片地址區域System.out.println(b == f); // false 指向的地址不同b是new出來的System.out.println(f == d); // true f自動拆箱為int類型System.out.println(f == ff); /** false 指向的不是同一片地址區域。* 在Integer類型中,-128到127存放的是同一片區域地址,* 之外的數是另外開辟空間來進行 存儲的*/System.out.println(d == dd); // true 不解釋} public static void comp5(){Integer i01 = 59;int i02 = 59;Integer i03 =Integer.valueOf(59);Integer i04 = new Integer(59);System.out.println(i01 == i02);//trueSystem.out.println(i01 == i03);//trueSystem.out.println(i03 == i04);//falseSystem.out.println(i02 == i04);//true} public static void comp6(){Integer i01 = 128;int i02 = 128;Integer i03 = Integer.valueOf(128);Integer i04 = new Integer(128);System.out.println(i01 == i02);//trueSystem.out.println(i01 == i03);//falseSystem.out.println(i03 == i04);//falseSystem.out.println(i02 == i04);//true}

總結

以上是生活随笔為你收集整理的你知道Integer和int的区别吗的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 大陆熟妇丰满多毛xxxⅹ | 激情片 | 日韩成人在线观看 | 另类毛片 | 日韩成人一区二区 | 少妇被躁爽到高潮无码人狍大战 | av在线免费观看不卡 | 亚洲成人av免费在线观看 | 国产天堂第一区 | 成人区一区二区 | brazzers欧美大波霸 | 亚洲国产aⅴ精品一区二区 日韩黄色在线视频 | 污片在线看 | 在线97| 一级特黄录像免费看 | 精品成人一区二区三区 | 黄色长视频 | 91视频播放| 波多野结衣乳巨码无在线观看 | 日本青青草视频 | 香蕉视频免费网站 | 在线观看视频一区 | 欧美成人精品一区二区三区 | 国产二区电影 | 国产又粗又猛又爽又黄av | 国产码视频| 啪啪免费视频网站 | 久久精品天堂 | 日韩精品视频一区二区 | 制服丝袜在线播放 | 91调教视频 | 久久91| 久久久久综合 | 伊人av网| 午夜偷拍视频 | 精品国产乱码一区二区 | 炕上如狼似虎的呻吟声 | 国精产品一区一区三区 | 成av在线| 成人在线视频一区二区三区 | 欧美精品免费播放 | 末发成年娇小性xxxxx | 午夜亚洲AV永久无码精品蜜芽 | 伊人狼人影院 | 欧美日韩高清一区二区 国产亚洲免费看 | 色老头一区二区 | 91av视频网站 | 91最新入口| 亚洲最大的成人网 | 国产视频资源 | 97超碰97 | 伊人色综合久久久 | 96精品视频 | 国产性猛交xxxⅹ交酡全过程 | 日韩黄色片网站 | 国产成人精品在线视频 | 天天干影院 | 悠悠av | 欧美亚洲| 日韩视频一区二区在线观看 | 午夜人体视频 | 尤物视频在线 | 日韩色| 成人在线观看亚洲 | 成人无码精品1区2区3区免费看 | 亚洲无限观看 | 亚洲午夜福利一区二区三区 | 久草福利在线视频 | 麻豆国产在线播放 | 性感美女高潮 | 91毛片观看 | 日韩一级一级 | 最污网站在线观看 | 欧美亚日韩 | 国产91在线亚洲 | 97国产成人无码精品久久久 | 中文字幕乱码人妻一区二区三区 | 成人91免费视频 | 在线免费看黄 | 黄色网址在线视频 | av在线亚洲天堂 | 欧美人妻日韩精品 | tube国产麻豆| 91精品婷婷国产综合久久竹菊 | 一区二区三区在线播放视频 | 97在线免费视频观看 | 欧美片17c07.com| 久久久久亚洲av无码麻豆 | 日韩黄色av网站 | 日韩一区二区在线视频 | 欧洲精品一区二区三区 | 无遮挡av| 国产在线播放一区二区 | 久久国产这里只有精品 | 在线不卡二区 | 午夜久久一区 | 久久日韩精品 | 四虎免费在线观看 | 你懂的av在线 |