亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談Java中Int、Integer、Integer.valueOf()、new Integer()之間的區(qū)別

 更新時間:2021年11月08日 08:54:19   作者:feng的記憶  
本文主要介紹了淺談Java中Int、Integer、Integer.valueOf()、new Integer()之間的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

Int

Int是Java八種基本數(shù)據(jù)類型之一,一般大小為4字節(jié)32位,取值范圍為2-31—231。兩個Int類型變量用“==”比較的是值的大小。

package com.company.algorithm;

public class Main {
    public static void main(String[] args) {
        int a = 100;
        int b = 100;
        System.out.println(a == b);//true
    }
}

Integer和Integer.valueOf()

將Int值賦給Integer變量,系統(tǒng)會自動將這個Int值封裝成一個Integer對象。
比如:Integer a = 100;實際上的操作是:Integer a = Integer.valueOf(100);
以下是valueOf()的源碼

在這里插入圖片描述

注意:這里Integer.valueOf(),當(dāng)Int值的范圍在-128-127之間時,會通過一個IntegerCache緩存來創(chuàng)建Integer對象;當(dāng)Int值不在該范圍時,直接調(diào)用new Integer()來創(chuàng)建對象,因此會出現(xiàn)以下的情況
(1)Integer a = 100; Integer b = 100; a==b結(jié)果為true,因為這兩個Integer變量引用的是緩存中的同一個Integer對象 ;
(2)Integer c = 200; Integer d = 200; a==b結(jié)果為false,因為a和b是通過new Integer() 創(chuàng)建的兩個不同對象。

package com.company.algorithm;

public class Main {
    public static void main(String[] args) {
        Integer a = 100;
        Integer b = 100;
        Integer c = 200;
        Integer d = 200;
        System.out.println(a == b);//true
        System.out.println(c == d);//false
    }
}

new Integer()

new Integer()每次都會創(chuàng)建新的對象,==比較的是兩個對象的內(nèi)存地址

package com.company.algorithm;

public class Main {
    public static void main(String[] args) {
        Integer a = new Integer(100);
        Integer b = new Integer(100);
        System.out.println(a == b);//false
    }
}

三者之間的比較

(1)不管是new創(chuàng)建的Integer對象,還是通過直接賦值Int值創(chuàng)建的Integer對象,它們與Int類型變量通過“==”進(jìn)行比較時都會自動拆箱變成Int類型,所以Integer對象和Int變量比較的是內(nèi)容大小。

package com.company.algorithm;

public class Main {
    public static void main(String[] args) {
        int a = 100;
        Integer b = 100;//等價于b=Integer.valueOf(100);
        Integer c = new Integer(100);
        System.out.println(a == b);//true
        System.out.println(a == c);//true
    }
}

(2)new創(chuàng)建的Integer對象和直接賦Int值創(chuàng)建的Integer對象使用==比較的是它們的內(nèi)存地址。

package com.company.algorithm;

public class Main {
    public static void main(String[] args) {
        Integer b = 100;//等價于b=Integer.valueOf(100);
        Integer c = new Integer(100);
        System.out.println(b == c);//false
    }
}

(3)賦Int值創(chuàng)建的Integer對象比較:
當(dāng)Int值在-128-127之間時,兩個Integer變量引用的是IntegerCache中的同一個對象,內(nèi)存地址相同,因此==的結(jié)果為true;
當(dāng)Int值不在以上范圍時,兩個Integer對象都是通過new創(chuàng)建的,內(nèi)存地址不同,因此==的結(jié)果為false

package com.company.algorithm;

public class Main {
    public static void main(String[] args) {
        Integer a = 100;
        Integer b = 100;
        Integer c = 200;
        Integer d = 200;
        Integer f = new Integer(100);
        System.out.println(a == b);//true
        System.out.println(c == d);//false
        System.out.println(a == f);//false
    }
}

一個金典面試題

package com.company.algorithm;

public class Main {
    public static void main(String[] args) {
        Integer a = 49;
        int b = 49;
        Integer c = Integer.valueOf(49);
        Integer d = new Integer(49);
        System.out.println(a == b);//true
        System.out.println(a == c);//true
        System.out.println(b == c);//true
        System.out.println(c == d);//false
    }
}

到此這篇關(guān)于淺談Java中Int、Integer、Integer.valueOf()、new Integer()之間的區(qū)別的文章就介紹到這了,更多相關(guān)Java Int Integer Integer.valueOf() newInteger內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot+thymeleaf國際化之LocaleResolver接口的示例

    springboot+thymeleaf國際化之LocaleResolver接口的示例

    本篇文章主要介紹了springboot+thymeleaf國際化之LocaleResolver的示例 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 基于Java實現(xiàn)的Base64加密、解密原理代碼

    基于Java實現(xiàn)的Base64加密、解密原理代碼

    這篇文章主要介紹了基于Java實現(xiàn)的Base64加密、解密原理代碼,需要的朋友可以參考下
    2014-07-07
  • Springcloud sentinel安裝和使用方法解析

    Springcloud sentinel安裝和使用方法解析

    這篇文章主要介紹了Springcloud sentinel安裝和使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • Spring框架初始化解析

    Spring框架初始化解析

    這篇文章主要介紹了Spring框架初始化解析,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • java實現(xiàn)二叉樹遍歷的三種方式

    java實現(xiàn)二叉樹遍歷的三種方式

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)二叉樹遍歷的三種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 基于Java多線程notify與notifyall的區(qū)別分析

    基于Java多線程notify與notifyall的區(qū)別分析

    本篇文章對Java中多線程notify與notifyall的區(qū)別進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • Java工廠模式之簡單工廠,工廠方法,抽象工廠模式詳解

    Java工廠模式之簡單工廠,工廠方法,抽象工廠模式詳解

    這篇文章主要為大家詳細(xì)介紹了Java工廠模式之簡單工廠、工廠方法、抽象工廠模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • spring 和 spring boot 中的屬性配置方式

    spring 和 spring boot 中的屬性配置方式

    這篇文章主要介紹了spring 和 spring boot 中的屬性配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • RocketMQ順序消息的原理與特點

    RocketMQ順序消息的原理與特點

    RocketMQ作為一款純java、分布式、隊列模型的開源消息中間件,支持事務(wù)消息、順序消息、批量消息、定時消息、消息回溯等,本篇我們了解如何實現(xiàn)順序消息的原理與特點
    2023-02-02
  • 一文詳解Lombok中@ToString()的使用技巧

    一文詳解Lombok中@ToString()的使用技巧

    在平時我們工作的時候,我們經(jīng)常會使用toString()?方法來輸出一個對象的一些屬性信息。Lombok?給我們提供了一個自動生成?toString()代碼的注解,可以減少代碼行數(shù),本文就來和大家詳細(xì)聊聊吧
    2023-02-02

最新評論