<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          面試官:int和Integer有什么區(qū)別?為什么要有包裝類?

          共 1550字,需瀏覽 4分鐘

           ·

          2021-12-02 13:26

          作者 |?磊哥

          來源 | Java面試真題解析(ID:aimianshi666)

          轉(zhuǎn)載請聯(lián)系授權(quán)(微信ID:GG_Stone)

          重要說明:本篇為博主《面試題精選-基礎篇》系列中的一篇,查看系列面試文章請關注我。Gitee 開源地址:https://gitee.com/mydb/interview

          Java 是一種強數(shù)據(jù)類型的語言,因此所有的屬性必須有一個數(shù)據(jù)類型。就像麥德龍超市一樣,想要進去購物,先要有一個會員卡才行(刷卡入內(nèi))。

          PS:Java 10 有了局部變量類型推導,可以使用 var 來替代某個具體的數(shù)據(jù)類型,但在字節(jié)碼階段,Java 的變量仍有著明確的數(shù)據(jù)類型,且局部變量類型推導有著很多限制和不完善之處,也不是目前主流的應用版本,所以這里不做深入討論。

          回到主題,要理解 int 和 Integer 的區(qū)別,要先從 Java 的基礎數(shù)據(jù)類型說起。

          基本數(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 中一種常用的基礎數(shù)據(jù)類型

          包裝類及其作用

          因為 Java 的設計理念是一切皆是對象,在很多情況下,需要以對象的形式操作,比如 hashCode() 獲取哈希值,或者 getClass() 獲取類等。

          包裝類的作用

          在 Java 中每個基本數(shù)據(jù)類型都對應了一個包裝類,而 int 對應的包裝類就是 Integer包裝類的存在解決了基本數(shù)據(jù)類型無法做到的事情泛型類型參數(shù)、序列化、類型轉(zhuǎn)換、高頻區(qū)間數(shù)據(jù)緩存等問題

          基礎類型包裝類型
          intInteger
          shortShort
          byteByte
          longLong
          floatFloat
          doubleDouble
          charCharacter
          booleanBoolean

          int 和 Integer 的區(qū)別

          int 和 Integer的區(qū)別主要體現(xiàn)在以下幾個方面:

          1. 數(shù)據(jù)類型不同:int 是基礎數(shù)據(jù)類型,而 Integer 是包裝數(shù)據(jù)類型;
          2. 默認值不同:int 的默認值是 0,而 Integer 的默認值是 null;
          3. 內(nèi)存中存儲的方式不同:int 在內(nèi)存中直接存儲的是數(shù)據(jù)值,而 Integer 實際存儲的是對象引用,當 new 一個 Integer 時實際上是生成一個指針指向此對象;
          4. 實例化方式不同:Integer 必須實例化才可以使用,而 int 不需要;
          5. 變量的比較方式不同:int 可以使用 == 來對比兩個變量是否相等,而 Integer 一定要使用 equals 來比較兩個變量是否相等。

          總結(jié)

          Integer 是 int 的包裝類,它們的區(qū)別主要體現(xiàn)在 5 個方面:數(shù)據(jù)類型不同、默認值不同、內(nèi)存中存儲的方式不同、實例化方式不同以及變量的比較方式不同。包裝類的存在解決了基本數(shù)據(jù)類型無法做到的事情泛型類型參數(shù)、序列化、類型轉(zhuǎn)換、高頻區(qū)間數(shù)據(jù)緩存等問題。

          參考 & 鳴謝

          《碼出高效:Java開發(fā)手冊》

          關注公眾號:Java面試真題解析,查看更多 Java 面試題。

          瀏覽 52
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美日韩一级免费看 | 亚洲爆乳无码一区二区三区 | 久久久亚洲AV成人电影 | 中文字幕第五页在线观看 | 性色A√|