欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中int與Integer的區(qū)別詳解及常見(jiàn)問(wèn)題解決

 更新時(shí)間:2025年07月05日 09:52:56   作者:十六點(diǎn)五  
在Java編程語(yǔ)言中int和Integer雖然都用于表示數(shù)值,但它們之間存在著顯著的區(qū)別,這篇文章主要介紹了Java中int與Integer的區(qū)別詳解及常見(jiàn)問(wèn)題的相關(guān)資料,需要的朋友可以參考下

1. 本質(zhì)與存儲(chǔ)方式

特性intInteger
類型基本數(shù)據(jù)類型(Primitive Type)引用類型(包裝類,Object 的子類)
存儲(chǔ)位置棧內(nèi)存(Stack)堆內(nèi)存(Heap)
內(nèi)存占用4 字節(jié)(固定)對(duì)象頭 + 4 字節(jié)值 ≈ 16-24 字節(jié)

示例

 int a = 10;                 // 棧中直接存儲(chǔ)值 10
 Integer b = Integer.valueOf(10); // 堆中存儲(chǔ)對(duì)象,變量 b 存儲(chǔ)對(duì)象引用

2. 默認(rèn)值

場(chǎng)景intInteger
未初始化值0null
集合存儲(chǔ)無(wú)法直接存入集合(需自動(dòng)裝箱為 Integer可直接存入集合(如 List<Integer>

示例

 int num1;                    // 默認(rèn)值為 0
 Integer num2;                // 默認(rèn)值為 null(可能引發(fā) NullPointerException)
 List<Integer> list = new ArrayList<>();
 list.add(10);               // 自動(dòng)裝箱:int → Integer

3. 功能與方法

能力intInteger
方法支持無(wú)方法,僅存儲(chǔ)值提供數(shù)值轉(zhuǎn)換、比較等工具方法(如 parseInt()compareTo()
空值處理不能為 null可為 null(需注意空指針)
泛型支持無(wú)法直接用于泛型支持泛型(如 List<Integer>

示例

 int num = Integer.parseInt("123");     // String → int
 Integer value = Integer.valueOf("456");// String → Integer
 int max = Integer.MAX_VALUE;           // 獲取 int 最大值

4. 自動(dòng)裝箱與拆箱

  • 自動(dòng)裝箱(Autoboxing):Java 編譯器自動(dòng)將 int 轉(zhuǎn)換為 Integer。

  • 自動(dòng)拆箱(Unboxing):自動(dòng)將 Integer 轉(zhuǎn)換為 int

示例

 Integer a = 10;     // 自動(dòng)裝箱:等價(jià)于 Integer.valueOf(10)
 int b = a;          // 自動(dòng)拆箱:等價(jià)于 a.intValue()

性能注意: 自動(dòng)裝箱/拆箱會(huì)帶來(lái)額外開(kāi)銷,高頻操作時(shí)建議直接使用 int。

5. 比較操作

比較方式intInteger
== 比較直接比較值是否相等比較對(duì)象引用地址(除非值在緩存范圍內(nèi))
equals()不適用(基本類型無(wú)方法)比較值是否相等

示例

 int x1 = 1000;
 int x2 = 1000;
 System.out.println(x1 == x2); // true(值相等)
 ?
 Integer y1 = 1000;
 Integer y2 = 1000;
 System.out.println(y1 == y2); // false(對(duì)象地址不同)
 System.out.println(y1.equals(y2)); // true(值相等)
 ?
 // 緩存范圍測(cè)試(-128~127)
 Integer z1 = 127;
 Integer z2 = 127;
 System.out.println(z1 == z2); // true(復(fù)用緩存對(duì)象)

6. 緩存機(jī)制(IntegerCache)

  • 緩存范圍Integer 類默認(rèn)緩存 -128127 之間的值。

  • 目的:減少頻繁創(chuàng)建小數(shù)值對(duì)象,優(yōu)化內(nèi)存和性能。

  • 擴(kuò)展緩存:可通過(guò) JVM 參數(shù) -XX:AutoBoxCacheMax=<size> 調(diào)整上限。

示例

 Integer a = 127;    // 從緩存獲取
 Integer b = 127;    // 復(fù)用緩存對(duì)象
 System.out.println(a == b); // true
 ?
 Integer c = 128;    // 超出緩存范圍,新建對(duì)象
 Integer d = 128;    // 新建另一個(gè)對(duì)象
 System.out.println(c == d); // false

7. 使用場(chǎng)景

場(chǎng)景推薦使用原因
高頻計(jì)算int避免自動(dòng)裝箱開(kāi)銷,性能更優(yōu)
集合存儲(chǔ)Integer集合泛型不支持基本類型(如 List<int> 非法)
數(shù)據(jù)庫(kù)映射Integer數(shù)據(jù)庫(kù)字段可能為 NULL,int 無(wú)法表示
API 設(shè)計(jì)Integer方法參數(shù)或返回值可能需區(qū)分“無(wú)值”(null)

8. 常見(jiàn)問(wèn)題與陷阱

(1) NullPointerException

 Integer value = null;
 int num = value; // 運(yùn)行時(shí)拋出 NullPointerException(自動(dòng)拆箱調(diào)用 intValue())

(2) 性能損耗

 // 高頻循環(huán)中自動(dòng)裝箱導(dǎo)致性能下降
 long sum = 0;
 for (Integer i = 0; i < 100000; i++) { // 每次循環(huán)觸發(fā)裝箱
     sum += i;
 }

(3) 比較錯(cuò)誤

 Integer a = 200;
 Integer b = 200;
 if (a == b) { // false,應(yīng)使用 equals() 或 intValue() 比較
     System.out.println("Equal");
 }

總結(jié)

維度intInteger
類型基本數(shù)據(jù)類型包裝類(引用類型)
內(nèi)存棧存儲(chǔ),高效堆存儲(chǔ),有對(duì)象開(kāi)銷
空值不支持支持(需防空指針)
方法無(wú)提供工具方法
適用場(chǎng)景高頻計(jì)算、性能敏感場(chǎng)景集合、數(shù)據(jù)庫(kù)映射、API 設(shè)計(jì)

選擇建議

  • 優(yōu)先使用 int:在不需要對(duì)象特性(如 null 值、方法操作)時(shí),提升性能。

  • 必須使用 Integer:在泛型集合、數(shù)據(jù)庫(kù)映射或需要區(qū)分“無(wú)值”場(chǎng)景時(shí)。

到此這篇關(guān)于Java中int與Integer的區(qū)別詳解及常見(jiàn)問(wèn)題解決的文章就介紹到這了,更多相關(guān)Java中int與Integer區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用

    SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用

    本文主要介紹了SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • 教你用Java驗(yàn)證服務(wù)器登錄系統(tǒng)

    教你用Java驗(yàn)證服務(wù)器登錄系統(tǒng)

    這篇文章主要介紹了教你用Java驗(yàn)證服務(wù)器登錄系統(tǒng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java計(jì)時(shí)器StopWatch實(shí)現(xiàn)方法代碼實(shí)例

    Java計(jì)時(shí)器StopWatch實(shí)現(xiàn)方法代碼實(shí)例

    這篇文章主要介紹了Java計(jì)時(shí)器StopWatch實(shí)現(xiàn)方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot基于HttpMessageConverter實(shí)現(xiàn)全局日期格式化

    SpringBoot基于HttpMessageConverter實(shí)現(xiàn)全局日期格式化

    這篇文章主要介紹了SpringBoot基于HttpMessageConverter實(shí)現(xiàn)全局日期格式化,使用Jackson消息轉(zhuǎn)換器,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-12-12
  • spring aop之@AfterReturning不生效問(wèn)題及解決

    spring aop之@AfterReturning不生效問(wèn)題及解決

    這篇文章主要介紹了spring aop之@AfterReturning不生效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Spring Boot實(shí)現(xiàn)模塊化的幾種方法

    Spring Boot實(shí)現(xiàn)模塊化的幾種方法

    模塊可以是業(yè)務(wù)模塊,為應(yīng)用程序提供一些業(yè)務(wù)服務(wù),或者為幾個(gè)其他模塊或整個(gè)應(yīng)用程序提供跨領(lǐng)域關(guān)注的技術(shù)模塊。這篇文章主要介紹了Spring Boot實(shí)現(xiàn)模塊化,需要的朋友可以參考下
    2018-07-07
  • 基于Java代碼實(shí)現(xiàn)數(shù)字在數(shù)組中出現(xiàn)次數(shù)超過(guò)一半

    基于Java代碼實(shí)現(xiàn)數(shù)字在數(shù)組中出現(xiàn)次數(shù)超過(guò)一半

    這篇文章主要介紹了基于Java代碼實(shí)現(xiàn)數(shù)字在數(shù)組中出現(xiàn)次數(shù)超過(guò)一半的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • SpringBoot+JavaMailSender實(shí)現(xiàn)騰訊企業(yè)郵箱配置

    SpringBoot+JavaMailSender實(shí)現(xiàn)騰訊企業(yè)郵箱配置

    這篇文章主要介紹了SpringBoot+JavaMailSender實(shí)現(xiàn)騰訊企業(yè)郵箱配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 關(guān)于mybatis-plus邏輯刪除自動(dòng)填充更新時(shí)間的問(wèn)題

    關(guān)于mybatis-plus邏輯刪除自動(dòng)填充更新時(shí)間的問(wèn)題

    mybatis-plus是對(duì)mybatis的增強(qiáng),mybatis-plus更像是面向?qū)ο缶幊?,?shù)據(jù)庫(kù)基本CRUD的操作可以不用手動(dòng)編寫SQL語(yǔ)句,大大提高了開(kāi)發(fā)的效率,這篇文章主要介紹了mybatis-plus邏輯刪除自動(dòng)填充更新時(shí)間問(wèn)題,需要的朋友可以參考下
    2022-07-07
  • 基于mybatis-plus QueryWrapper 排序的坑

    基于mybatis-plus QueryWrapper 排序的坑

    這篇文章主要介紹了mybatis-plus QueryWrapper 排序的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論