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

基于Integer值判斷是否相等的問題

 更新時(shí)間:2021年01月25日 15:24:39   作者:呆呆的程序猿  
這篇文章主要介紹了基于Integer值判斷是否相等的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

面試中經(jīng)常遇到一個(gè)問題:

Integer a = 10;
Integer b = 10; 
System.out.println(a == b); 
a = 1000;
b = 1000; 
System.out.println(a == b);

兩個(gè)打印值分別是多少?

詳解:true;false;

默認(rèn)IntegerCache.low 是-128,Integer.high是127,如果在這個(gè)區(qū)間內(nèi),他就會(huì)把變量i當(dāng)做一個(gè)變量,放到內(nèi)存中;但如果不在這個(gè)范圍內(nèi),就會(huì)去new一個(gè)Integer對(duì)象,在這個(gè)題目中,10在范圍內(nèi),所以直接比較其值;1000不在范圍內(nèi),所以jdk幫我new了兩個(gè)實(shí)例,這樣在用==,肯定是false。

補(bǔ)充:Integer值判斷是否相等問題 要用equals判斷不要用“==”判斷

昨天在開發(fā)中遇到一個(gè)問題,定義了兩個(gè)Integer變量,暫且定義為Integer a; Integer b;

這兩個(gè)值由前端賦值并傳到后臺(tái),前臺(tái)傳的是a = 12345, b = 12345, 但我在后臺(tái)比較的時(shí)候 if (a == b),卻返回false,好無語(yǔ)啊,不都是123嗎?為什么返回false,后來改為equals(),返回true,但其中的有些端倪還不太清楚,現(xiàn)總結(jié)下:

我們知道Integer是int的包裝類,在jdk1.5以上,可以實(shí)現(xiàn)自動(dòng)裝箱拆箱,就是jdk里面會(huì)自動(dòng)幫我們轉(zhuǎn)換,不需要我們手動(dòng)去強(qiáng)轉(zhuǎn),所以我們經(jīng)常在這兩種類型中隨意寫,平時(shí)也沒什么注意

但I(xiàn)nteger他是對(duì)象,我們知道 == 比較的是堆中的地址,但有個(gè)奇怪的事是, 如果 Integer a = 123, Integer b = 123,可以返回true,但如果Integer a = 12345, Integer b = 12345,返回false,這就是jdk的東西,我們看下Integer的源碼

public static Integer valueOf(int i) {
 if (i >= IntegerCache.low && i <= IntegerCache.high)
  return IntegerCache.cache[i + (-IntegerCache.low)];
 return new Integer(i);
}

默認(rèn)IntegerCache.low 是-127,Integer.high是128,如果在這個(gè)區(qū)間內(nèi),他就會(huì)把變量i當(dāng)做一個(gè)變量,放到內(nèi)存中;但如果不在這個(gè)范圍內(nèi),就會(huì)去new一個(gè)Integer對(duì)象,

而我在代碼中,兩個(gè)Integer值都不在這個(gè)范圍內(nèi),所以jdk幫我new了兩個(gè)實(shí)例,這樣在用==,肯定是false。

所以如果要比較Integer的值,比較靠譜的是通過Integer.intValue();這樣出來的就是int值,就可以直接比較了;或者equals()比較

Integer的底層 equals是這樣定義的 先拆箱為int再來比較

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 一文帶你搞懂Java中Synchronized和Lock的原理與使用

    一文帶你搞懂Java中Synchronized和Lock的原理與使用

    這篇文章主要為大家詳細(xì)介紹了Java中Synchronized和Lock的原理與使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2023-04-04
  • Spring MVC 注解自動(dòng)掃描失效原因分析

    Spring MVC 注解自動(dòng)掃描失效原因分析

    這篇文章主要介紹了Spring MVC 注解自動(dòng)掃描失效原因分析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • Java并發(fā)之synchronized實(shí)現(xiàn)原理深入理解

    Java并發(fā)之synchronized實(shí)現(xiàn)原理深入理解

    這篇文章主要介紹了Java中synchronized實(shí)現(xiàn)原理詳解,涉及synchronized實(shí)現(xiàn)同步的基礎(chǔ),Java對(duì)象頭,Monitor,Mark Word,鎖優(yōu)化,自旋鎖等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • MyBatis中特殊符號(hào)的轉(zhuǎn)義

    MyBatis中特殊符號(hào)的轉(zhuǎn)義

    編寫SQL中會(huì)用到<,>,,>= 等,但是在mybatis中不可以這么寫,與xml文件的元素沖突,所以需要轉(zhuǎn)義,本文主要介紹了MyBatis中特殊符號(hào)的轉(zhuǎn)義,主要介紹了兩種轉(zhuǎn)義方式,感興趣的可以了解一下
    2024-01-01
  • Maven導(dǎo)入本地jar包的實(shí)現(xiàn)步驟

    Maven導(dǎo)入本地jar包的實(shí)現(xiàn)步驟

    本文主要介紹了Maven導(dǎo)入本地jar包的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • java實(shí)現(xiàn)銀行管理系統(tǒng)

    java實(shí)現(xiàn)銀行管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Spring Boot 2.4配置特定環(huán)境時(shí)spring: profiles提示被棄用的原因分析

    Spring Boot 2.4配置特定環(huán)境時(shí)spring: profiles提示被棄用的原

    這篇文章主要介紹了Spring Boot 2.4配置特定環(huán)境時(shí)spring: profiles提示被棄用的原因,本文給大家分享詳細(xì)解決方案,需要的朋友可以參考下
    2023-04-04
  • RocketMQ特性Broker存儲(chǔ)事務(wù)消息實(shí)現(xiàn)

    RocketMQ特性Broker存儲(chǔ)事務(wù)消息實(shí)現(xiàn)

    這篇文章主要為大家介紹了RocketMQ特性Broker存儲(chǔ)事務(wù)消息實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java21虛擬線程實(shí)踐

    Java21虛擬線程實(shí)踐

    java21正式版發(fā)布了,為我們帶來了很多新的特性,其中我最感興趣的就是虛擬線程,本文主要介紹了Java21虛擬線程實(shí)踐,感興趣的可以;了解一下
    2023-10-10
  • Spring Boot集成Spring Cloud Security進(jìn)行安全增強(qiáng)的方法

    Spring Boot集成Spring Cloud Security進(jìn)行安全增強(qiáng)的方法

    Spring Cloud Security是Spring Security的擴(kuò)展,它提供了對(duì)Spring Cloud體系中的服務(wù)認(rèn)證和授權(quán)的支持,包括OAuth2、JWT等,這篇文章主要介紹了Spring Boot集成Spring Cloud Security進(jìn)行安全增強(qiáng),需要的朋友可以參考下
    2024-11-11

最新評(píng)論

聂拉木县| 涞源县| 武宁县| 全椒县| 磴口县| 永福县| 英德市| 潼关县| 泰宁县| 宽城| 长顺县| 长海县| 米林县| 上蔡县| 肇东市| 获嘉县| 茶陵县| 东乌珠穆沁旗| 南充市| 临夏市| 介休市| 岳阳市| 峨眉山市| 邯郸市| 尼玛县| 祁阳县| 舞阳县| 横峰县| 鹤壁市| 邹平县| 宝清县| 焉耆| 华安县| 焉耆| 保靖县| 保靖县| 海兴县| 昭觉县| 海淀区| 县级市| 建昌县|