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

在Java中判斷兩個Long對象是否相等

 更新時間:2021年07月09日 11:01:18   作者:李白csdn  
這篇文章主要介紹了在Java中判斷兩個Long對象是否相等的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

拋出問題:

Long a = 4l;
Long b = 4l;
a == b //true
Long a = 128l;
Long b = 128l;
a == b //false

如果Long的值在[-127,128]之間,用“==”判斷是否相等是沒問題的,如果不在這個區(qū)間,是不能用“==”的,原因如下源碼解釋:

public static Long valueOf(long l) {
        final int offset = 128;
        if (l >= -128 && l <= 127) { // will cache
            return LongCache.cache[(int)l + offset];
        }
        return new Long(l);
    }

如果不在[-127,128]之間,則會new一個新對象,自然“==”兩個不同的對象,其結(jié)果必然是false了。

解決方案:

1、使用Long中的longValue()進行轉(zhuǎn)換

Long a = 128l;
Long b = 128l;
a.longValue() == b.longValue() //true

2、使用Long中的equals()

Long a = 128l;
Long b = 128l;
a.equals(b);//true

下面是該方法源碼:

public boolean equals(Object obj) {
        if (obj instanceof Long) {
            return value == ((Long)obj).longValue();
        }
        return false;
    }

兩個Long類型比較存在的坑

一般來說,兩個基本數(shù)據(jù)類型比較用 “==” 就可以了,平時很少用Long類型比較。

但是最近寫項目時遇到了兩個Long類型比較,當(dāng)時也是直接用的雙等于,然而當(dāng)debug時卻發(fā)現(xiàn)代碼執(zhí)行到這兩個Long類型比較判斷時并沒有進入這個判斷體內(nèi),然后上網(wǎng)搜索相關(guān)的問題, 其實很簡單,但是不知道的話就很很容易入坑。

解決方法具體如下:

可以讓兩個Long類型的變量分別調(diào)用 ==longValue()== 方法來實現(xiàn)就可以了。

代碼:

Long a=...;
Long b=...;
if (a.longValue() == b.longValue()) {
             ...;
}

其實Long是java數(shù)據(jù)包裝類的一種,以上屬于包裝類Long轉(zhuǎn)化為基本數(shù)據(jù)類型long的情況,以下列舉其它數(shù)據(jù)包裝類拆箱轉(zhuǎn)化為基本數(shù)據(jù)類型的情況:

Integer轉(zhuǎn)為int,需要調(diào)用intValue()方法

Double轉(zhuǎn)為double,需要調(diào)用doubleValue()方法

Float轉(zhuǎn)為float,需要調(diào)用floatValue()方法

總結(jié):

某包裝類Xxx轉(zhuǎn)為對應(yīng)的基本數(shù)據(jù)類型時,則調(diào)用xxxValue()方法。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中List集合數(shù)據(jù)修改方式

    Java中List集合數(shù)據(jù)修改方式

    這篇文章主要介紹了Java中List集合數(shù)據(jù)修改方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解Java設(shè)計模式編程中的依賴倒置原則

    詳解Java設(shè)計模式編程中的依賴倒置原則

    這篇文章主要介紹了詳解Java設(shè)計模式中的依賴倒置原則,針對面對對象編程中的抽象的運用,需要的朋友可以參考下
    2016-02-02
  • Java 常量池的實例詳解

    Java 常量池的實例詳解

    這篇文章主要介紹了Java 常量池的實例詳解的相關(guān)資料,Java的常量池中包含了類、接口、方法、字符串等一系列常量值,需要的朋友可以參考下
    2017-09-09
  • Java8處理集合的優(yōu)雅姿勢之Stream

    Java8處理集合的優(yōu)雅姿勢之Stream

    這篇文章主要給大家介紹了關(guān)于Java8優(yōu)雅處理集合之Stream的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者使用java8具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java那些鮮為人知的關(guān)鍵字volatile詳析

    Java那些鮮為人知的關(guān)鍵字volatile詳析

    這篇文章主要給大家介紹了關(guān)于Java那些鮮為人知的關(guān)鍵字volatile的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java 數(shù)組差集實例代碼

    Java 數(shù)組差集實例代碼

    這篇文章主要介紹了Java 數(shù)組差集實例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • IDEA如何設(shè)置SVN提交忽略文件 target.iml

    IDEA如何設(shè)置SVN提交忽略文件 target.iml

    使用IDEA的SVN插件時,可能會遇到提交不必要文件的問題,解決這個問題有兩種方法:第一種是在IDEA設(shè)置中的File Types下的Ignore files and folders添加需要忽略的文件或文件夾;第二種是使用SVN客戶端TortoiseSVN,在項目目錄點擊右鍵選擇properties
    2024-10-10
  • Spring中緩存注解@Cache的使用詳解

    Spring中緩存注解@Cache的使用詳解

    這篇文章主要介紹了Spring中緩存注解@Cache的使用詳解,使用注解對數(shù)據(jù)進行緩存功能的框架,只需要簡單地加一個注解,就能實現(xiàn)緩存功能,大大簡化我們在業(yè)務(wù)中操作緩存的代碼,需要的朋友可以參考下
    2023-07-07
  • MyBatis中的JdbcType映射使用詳解

    MyBatis中的JdbcType映射使用詳解

    這篇文章主要介紹了MyBatis中的JdbcType映射使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • SpringBoot?MongoCustomConversions自定義轉(zhuǎn)換方式

    SpringBoot?MongoCustomConversions自定義轉(zhuǎn)換方式

    這篇文章主要介紹了SpringBoot?MongoCustomConversions自定義轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論

邛崃市| 崇明县| 绥阳县| 兰西县| 泰和县| 陕西省| 浪卡子县| 神池县| 临猗县| 大港区| 永靖县| 定边县| 高要市| 信宜市| 敦化市| 南溪县| 化德县| 闽侯县| 剑阁县| 静安区| 广宁县| 桂阳县| 雷山县| 宣恩县| 会昌县| 虞城县| 双流县| 甘泉县| 沙雅县| 得荣县| 金阳县| 渝北区| 涪陵区| 天台县| 勃利县| 启东市| 尼勒克县| 商南县| 银川市| 眉山市| 夏邑县|