广告
返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈Java中Int、Integer、Integer.valueOf()、new Integer()之间的区别
  • 335
分享到

浅谈Java中Int、Integer、Integer.valueOf()、new Integer()之间的区别

2024-04-02 19:04:59 335人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录IntInteger和Integer.valueOf()new Integer()三者之间的比较Int Int是Java八种基本数据类型之一,一般大小为4字节32位,取值范围为2

Int

Int是Java八种基本数据类型之一,一般大小为4字节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变量,系统会自动将这个Int值封装成一个Integer对象。
比如:Integer a = 100;实际上的操作是:Integer a = Integer.valueOf(100);
以下是valueOf()的源码

在这里插入图片描述

注意:这里Integer.valueOf(),当Int值的范围在-128-127之间时,会通过一个IntegerCache缓存来创建Integer对象;当Int值不在该范围时,直接调用new Integer()来创建对象,因此会出现以下的情况
(1)Integer a = 100; Integer b = 100; a==b结果为true,因为这两个Integer变量引用的是缓存中的同一个Integer对象 ;
(2)Integer c = 200; Integer d = 200; a==b结果为false,因为a和b是通过new Integer() 创建的两个不同对象。


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()每次都会创建新的对象,==比较的是两个对象的内存地址


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创建的Integer对象,还是通过直接赋值Int值创建的Integer对象,它们与Int类型变量通过“==”进行比较时都会自动拆箱变成Int类型,所以Integer对象和Int变量比较的是内容大小。


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创建的Integer对象和直接赋Int值创建的Integer对象使用==比较的是它们的内存地址。


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值创建的Integer对象比较:
当Int值在-128-127之间时,两个Integer变量引用的是IntegerCache中的同一个对象,内存地址相同,因此==的结果为true;
当Int值不在以上范围时,两个Integer对象都是通过new创建的,内存地址不同,因此==的结果为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
    }
}

到此这篇关于浅谈Java中Int、Integer、Integer.valueOf()、new Integer()之间的区别的文章就介绍到这了,更多相关Java Int Integer Integer.valueOf() newInteger内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈Java中Int、Integer、Integer.valueOf()、new Integer()之间的区别

本文链接: https://www.lsjlt.com/news/156653.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈Java中Int、Integer、Integer.valueOf()、new Integer()之间的区别
    目录IntInteger和Integer.valueOf()new Integer()三者之间的比较Int Int是Java八种基本数据类型之一,一般大小为4字节32位,取值范围为2...
    99+
    2022-11-12
  • Java中Int、Integer、Integer.valueOf()、new Integer()之间的区别是什么
    本篇内容主要讲解“Java中Int、Integer、Integer.valueOf()、new Integer()之间的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中Int、...
    99+
    2023-06-25
  • java中int与integer的区别
    一、java基本数据类型及其封装类java数据类型有基本数据类型和引用数据类型,为了方便将基本数据类型当作对象处理,java引入了基本数据类型相对应的封装类,如int封装类是Integer。在线教学视频分享:java教学视频二、java自动...
    99+
    2020-09-16
    java入门 java int integer 区别
  • java中int和Integer的区别
    java中int和Integer的区别:类型不同,int是数据类型,而integer是引用类型。int存储的是数值,integer存储的是引用对象的地址。integer对象会占用更多的内存,而int占用的空间少。Integer变量与int变...
    99+
    2022-10-20
  • java中int和integer的区别是什么?
    java中int和integer的区别 ● int是基本数据类型,int变量存储的是数值;Integer是引用数据类型,实际是一个对象,Integer存储的是引用对象的地址。 ● int默认值是0,Integer默认值是null; ● in...
    99+
    2021-09-17
    java教程 java int integer
  • Java中Integer和int的区别是什么
    这篇文章主要介绍Java中Integer和int的区别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、基本概念(重要)Integer 是 int 的包装类,int 则是 java 的一种基本数据类型;Inte...
    99+
    2023-06-15
  • Java中int与Integer的区别是什么
    这篇文章主要讲解了“Java中int与Integer的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中int与Integer的区别是什么”吧!nJava 是一种强数据类型的...
    99+
    2023-06-21
  • 详谈java中int和Integer的区别及自动装箱和自动拆箱
    目录int和Integer的区别及自动装箱和自动拆箱Integer和int的对比,如下所示:自动装箱和自动拆箱:Integer的自动拆装箱的陷阱(整型数-128到127的值比较问题)...
    99+
    2022-11-12
  • 你知道在Java中Integer和int的这些区别吗?
    目录一、基本概念(重要)二、拓展三、new Integer()与new Integer()的比较四、Integer与new Integer()的比较五、Integer与Integer...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作