最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談JAVA最常見的裝箱/拆箱坑

 更新時間:2026年03月17日 08:50:13   作者:肯戳加勾  
本文主要介紹了淺談JAVA最常見的裝箱/拆箱坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. Integer / Long 判等用 ==

Integer a = 128;
Integer b = 128;
System.out.println(a == b); // false

很多人以為是 true,但這是比較“對象地址”,不是比較值。
正確寫法:

Objects.equals(a, b)

或者:

a.equals(b)

但 a.equals(b) 要注意 a 不能為 null,所以更穩(wěn)的是:

Objects.equals(a, b)

這個坑在 Long id、Integer status 上特別常見。

2. 包裝類型和基本類型比較觸發(fā)拆箱,null 會空指針

Integer status = null;

if (status == 1) {
    ...
}

這會報 NullPointerException。 因為它會自動拆箱成:

status.intValue() == 1

更安全的寫法:

Integer.valueOf(1).equals(status)

或者:

Objects.equals(status, 1)

3. Boolean 當(dāng)成 boolean 用,null 會炸

Boolean deleted = null;

if (deleted) {
    ...
}

這也會空指針。因為 Java 會自動拆箱:

if (deleted.booleanValue()) {
    ...
}

安全寫法:

Boolean.TRUE.equals(deleted)

如果判斷 false:

Boolean.FALSE.equals(deleted)

這個在配置項、開關(guān)字段里特別常見。

4. 數(shù)據(jù)庫字段是 Integer / Long,直接賦給基本類型

Integer dbValue = null;
int value = dbValue;

這會空指針,因為這里發(fā)生了拆箱。

正確做法:

int value = dbValue == null ? 0 : dbValue;

或者保持包裝類型:

Integer value = dbValue;

如果數(shù)據(jù)庫字段允許為空,Java 實體通常就應(yīng)該用包裝類型,不要用基本類型。

5. 集合里必須用包裝類型,不能用基本類型

這個不算坑,但很常見

List<int> ids = new ArrayList<>();

這是錯的,Java 泛型不能用基本類型。

只能寫:

List<Integer> ids = new ArrayList<>();

這里就涉及自動裝箱/拆箱,比如:

ids.add(1); // 自動裝箱成 Integer
int x = ids.get(0); // 自動拆箱成 int

如果 ids.get(0) 返回 null,這里也可能炸。

6. 三元表達式里混用包裝類型和基本類型

Integer a = null;
int b = true ? a : 0;

這個也可能空指針,因為 a 會被拆箱成 int。

這種代碼在“默認(rèn)值處理”時很容易寫出來。更穩(wěn)的寫法:

int b = a == null ? 0 : a;

7. Stream / Lambda 里隱式拆箱

List<Integer> list = Arrays.asList(1, 2, null, 4);
int sum = list.stream().mapToInt(Integer::intValue).sum();

這里如果有 null,會直接空指針。

安全一點要先過濾:

int sum = list.stream()
        .filter(Objects::nonNull)
        .mapToInt(Integer::intValue)
        .sum();

8. 狀態(tài)字段來自數(shù)據(jù)庫,直接 switch 或運算

Integer status = null;
switch (status) {
    case 1 -> ...
}

這也會因為拆箱報錯。

所以狀態(tài)字段如果可能為 null,先判空再處理。

項目里幾個實用的建議

  1. Long、Integer、Boolean 比較值時,優(yōu)先用 Objects.equals(...)
  2. 狀態(tài)判斷常量寫左邊,比如:
Integer.valueOf(1).equals(status)
  1. Boolean 判斷優(yōu)先寫:
Boolean.TRUE.equals(flag)
  1. 數(shù)據(jù)庫可空字段,Java 實體盡量用包裝類型,不要用基本類型
  2. 只要看到 == 1、== 0、if (flag),就要想一下會不會拆箱

到此這篇關(guān)于淺談JAVA最常見的裝箱/拆箱坑的文章就介紹到這了,更多相關(guān)JAVA 裝箱/拆箱坑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • idea?maven依賴引入失效無法正常導(dǎo)入依賴問題的解決方法

    idea?maven依賴引入失效無法正常導(dǎo)入依賴問題的解決方法

    有時候idea導(dǎo)入一個新項目,或者pom文件修改(新增)了依賴,pom文件和代碼會報紅,提示依賴包不存在,下面這篇文章主要給大家介紹了關(guān)于idea?maven依賴引入失效無法正常導(dǎo)入依賴問題的解決方法,需要的朋友可以參考下
    2023-04-04
  • 基于Java編寫一個實用的ExcelUtil工具類

    基于Java編寫一個實用的ExcelUtil工具類

    在項目中經(jīng)常遇到excel表格導(dǎo)入導(dǎo)出功能,每次都要重復(fù)寫有關(guān)excel 的邏輯,所以本文直接使用Java編寫一個實用的ExcelUtil工具類,希望對大家有所幫助
    2024-04-04
  • 解決spring-data-jpa 事物中修改屬性自動更新update問題

    解決spring-data-jpa 事物中修改屬性自動更新update問題

    這篇文章主要介紹了解決spring-data-jpa 事物中修改屬性自動更新update問題,具有很好的參考價值,希望對大家
    2021-08-08
  • JAVA項目如何打包部署到Linux服務(wù)器上

    JAVA項目如何打包部署到Linux服務(wù)器上

    本文詳細(xì)介紹了在服務(wù)器上部署環(huán)境包括JDK、MySQL、Tomcat的設(shè)置,以及使用Idea-Maven-SpringBoot進行jar包打包部署的流程,內(nèi)容涵蓋了MySQL配置注意事項、pom.xml配置、打包命令等關(guān)鍵步驟,同時,也提供了如何將jar包上傳到Linux服務(wù)器并運行的具體方法
    2024-10-10
  • ThreadLocal作用原理與內(nèi)存泄露示例解析

    ThreadLocal作用原理與內(nèi)存泄露示例解析

    這篇文章主要為大家介紹了ThreadLocal作用原理與內(nèi)存泄露示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • java獲取文件大小的幾種方法

    java獲取文件大小的幾種方法

    這篇文章主要介紹了java獲取文件大小的幾種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • java 設(shè)計模式之適配器模式的詳解

    java 設(shè)計模式之適配器模式的詳解

    這篇文章主要介紹了java 設(shè)計模式之適配器模式的詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • java開發(fā)主流定時任務(wù)解決方案全橫評詳解

    java開發(fā)主流定時任務(wù)解決方案全橫評詳解

    這篇文章主要為大家介紹了java開發(fā)主流定時任務(wù)解決方案全橫評詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Java SpringMVC 集成靜態(tài)資源的方式你了解嗎

    Java SpringMVC 集成靜態(tài)資源的方式你了解嗎

    本篇文章主要介紹了SpringMVC集成靜態(tài)資源的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-10-10
  • Spring Cloud Alibaba Nacos Config進階使用

    Spring Cloud Alibaba Nacos Config進階使用

    這篇文章主要介紹了Spring Cloud Alibaba Nacos Config進階使用,文中使用企業(yè)案例,圖文并茂的展示了Nacos Config的使用,感興趣的小伙伴可以看一看
    2021-08-08

最新評論

石首市| 六枝特区| 上犹县| 郯城县| 沂水县| 拉萨市| 贡嘎县| 陇西县| 宣汉县| 桃园县| 眉山市| 新余市| 龙门县| 勃利县| 克什克腾旗| 东乌珠穆沁旗| 仁化县| 鹤庆县| 临沭县| 宜宾市| 临江市| 花垣县| 泰宁县| 开化县| 扎兰屯市| 仲巴县| 教育| 封丘县| 吴江市| 全州县| 南岸区| 伊宁市| 高清| 乌拉特后旗| 小金县| 乾安县| 丰县| 上虞市| 霸州市| 临西县| 堆龙德庆县|