广告
返回顶部
首页 > 资讯 > 精选 >Java中Integer和int的区别是什么
  • 496
分享到

Java中Integer和int的区别是什么

2023-06-15 12:06:42 496人浏览 八月长安
摘要

这篇文章主要介绍Java中Integer和int的区别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、基本概念(重要)Integer 是 int 的包装类,int 则是 java 的一种基本数据类型;Inte

这篇文章主要介绍Java中Integer和int的区别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、基本概念(重要)

  • Integer 是 int 的包装类,int 则是 java 的一种基本数据类型;

  • Integer 变量必须实例化后才能使用,而int变量不需要;

  • Integer 实际是对象的引用,当new一个 Integer时,实际上是生成一个指针指向此对象;而 int 则是直接存储数据值;

  • Integer的默认值是null,int的默认值是0。

二、拓展

基于以上的一些概念,这里我们拓展一下,对于Integer包装类型与int基本数据类型之间数值相互比较的结果进行一下说明,这个也可能在面试当中会被问到。

三、new Integer()与new Integer()的比较

下面的代码大家觉得结果是什么呢?大家可以先自己想一想然后再继续往下看。

public static boolean comp(){        Integer i1=new Integer(10);        Integer i2=new Integer(10);        return i1==i2;    }

Integer 变量必须实例化后才能使用,也就是我们必须new Integer()之后才可以使用,而我们知道,任何对象只要是new出来的都会放在堆内存中,同时该变量存储指向堆内存的地址,只要new出来的对象就是一个新对象,也就是说i1和i2指向的两个不同的对象,为了证明这一点,我们通过javap -v 看一下字节码,也能看的很清楚。

Java中Integer和int的区别是什么

因为是两个不同的对象,所以上面的结果是false。

Java中Integer和int的区别是什么

四、Integer与new Integer()的比较

再看下面的代码,Integer变量 和 new Integer() 变量比较

public static boolean comp1(){        Integer i1=new Integer(10);        Integer i2=10;        return i1==i2;    }

因为 Integer变量 指向的是 java 常量池中的对象,而 new Integer() 的变量指向堆中新建的对象,两者在内存中的地址不同,两者比较的话永远为 false。

五、Integer与Integer的比较

public static void comp2(){        Integer i = 100;        Integer j = 100;        System.out.print(i == j);        Integer m = 128;        Integer n = 128;        System.out.print(m == n);    }

这里为什么会列举两个呢?大家往下看。
其实Integer i = 100 在编译时,会翻译成为 Integer i = Integer.valueOf(100),而 java 对 Integer类型的 valueOf 的定义如下:

Java中Integer和int的区别是什么

这里的low和high分别为-128和127。

Java中Integer和int的区别是什么

阅读源码我们可以很清晰的看到,java对于-128到127之间的数,会进行缓存,所以 当Integer i 的值在 -128到127之间时,会将值进行缓存,下次再取Integer j(值在 -128到127之间)时,就会直接从缓存中取,就不会new了,这样拿到的就是同一个对象。当Integer i 的值不在 -128到127之间时,每次都会重新new Integer(),那么每次都会是不同的对象。所以看到这里,大家应该知道上面的两个不同的比较的结果是什么了把,前者为true,后者为false。

六、int 变量 与 Integer、 new Integer() 比较

int 变量 与 Integer、 new Integer() 比较时,只要两个的值是相等,则为true,需要说明的是包装类Integer 和 基本数据类型int 比较时,java会自动拆包装为int ,然后进行比较,实际上就变为两个int变量的比较。

Integer i = new Integer(10); //自动拆箱为 int i=10; 此时,相当于两个int的比较int j = 10;System.out.print(i == j); //true

看完了以上的,大家看看下面的比较大家能否写出正确的结果。

public static void comp3(){        int i = 128;        Integer i2 = 128;        Integer i3 = new Integer(128);        System.out.println("i == i2 = " + (i == i2)); // Integer会自动拆箱为int,所以为true        System.out.println("i == i3 = " + (i == i3)); // true,理由同上        Integer i4 = 127;// 编译时被翻译成:Integer i4 = Integer.valueOf(127);        Integer i5 = 127;        System.out.println("i4 == i5 = " + (i4 == i5));// true        Integer i6 = 128;        Integer i7 = 128;        System.out.println("i6 == i7 = " + (i6 == i7));// false        Integer i8 = new Integer(127);        System.out.println("i5 == i8 = " + (i5 == i8)); // false        Integer i9 = new Integer(128);        Integer i10 = new Integer(128);        System.out.println("i9 == i10 = " + (i9 == i10)); // false    }
public static void comp4(){        Integer a = new Integer(127), b = new Integer(128);        int c = 127, d = 128, dd = 128;        Integer e = 127, ee = 127, f = 128, ff = 128;        System.out.println(a == b); // false 因为a,b都是new出来的对象,地址不同所以为false        System.out.println(a == c); // true a会自动拆箱为int类型        System.out.println(a == e); // false 指向的地址不同a是new出来的        System.out.println(e == c); // true e会自动拆箱为int类型        System.out.println(e == ee);// true Integer对 处于-128到127范围之间,指向了同一片地址区域        System.out.println(b == f); // false 指向的地址不同b是new出来的        System.out.println(f == d); // true f自动拆箱为int类型        System.out.println(f == ff);         System.out.println(d == dd); // true 不解释    }
public static void comp5(){        Integer i01 = 59;        int i02 = 59;        Integer i03 =Integer.valueOf(59);        Integer i04 = new Integer(59);        System.out.println(i01 == i02);//true        System.out.println(i01 == i03);//true        System.out.println(i03 == i04);//false        System.out.println(i02 == i04);//true    }
public static void comp6(){        Integer i01 = 128;        int i02 = 128;        Integer i03 = Integer.valueOf(128);        Integer i04 = new Integer(128);        System.out.println(i01 == i02);//true        System.out.println(i01 == i03);//false        System.out.println(i03 == i04);//false        System.out.println(i02 == i04);//true    }

以上是“Java中Integer和int的区别是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Java中Integer和int的区别是什么

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

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

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

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

下载Word文档
猜你喜欢
  • 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的区别
    java中int和Integer的区别:类型不同,int是数据类型,而integer是引用类型。int存储的是数值,integer存储的是引用对象的地址。integer对象会占用更多的内存,而int占用的空间少。Integer变量与int变...
    99+
    2022-10-20
  • 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 区别
  • int和Integer的区别
    int和Integer的区别Integer是int的包装类,int则是java的一种基本数据类型 Integer变量必须实例化后才能使用,而int变量不需要 Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针...
    99+
    2018-02-20
    java教程 int Integer 区别
  • MySQL中int和integer有什么区别
    MySQL中int和integer有什么区别,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MySQL中int和integer的区别&nbs...
    99+
    2022-10-18
  • java integer和int的区别有哪些
    基础:int 是 java 的一种基础数据类型,而 integer 是int 的一个封装类。Integer 变量必须实例化之后才能使用,而 int 变量不需要。Integer 实际是对象的引用,当 new 一个 integer 对象时,实际...
    99+
    2018-09-15
    java教程 java integer int 区别
  • Integer与int有什么区别
    Integer与int有什么区别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Integer和int的区别Integer的默认初始值是null,而int的初始值是int,也...
    99+
    2023-06-06
  • 浅谈Java中Int、Integer、Integer.valueOf()、new Integer()之间的区别
    目录IntInteger和Integer.valueOf()new Integer()三者之间的比较Int Int是Java八种基本数据类型之一,一般大小为4字节32位,取值范围为2...
    99+
    2022-11-12
  • 你知道在Java中Integer和int的这些区别吗?
    目录一、基本概念(重要)二、拓展三、new Integer()与new Integer()的比较四、Integer与new Integer()的比较五、Integer与Integer...
    99+
    2022-11-12
  • MySQL中int(10)和int(11)的区别是什么
    这篇文章主要介绍了MySQL中int(10)和int(11)的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL中int(10)和int(11)的区别是什么文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-05
  • mysql中int和bigint的区别是什么
    这篇文章将为大家详细讲解有关mysql中int和bigint的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  1 bytes = 8 bit ,...
    99+
    2022-10-18
  • 详谈java中int和Integer的区别及自动装箱和自动拆箱
    目录int和Integer的区别及自动装箱和自动拆箱Integer和int的对比,如下所示:自动装箱和自动拆箱:Integer的自动拆装箱的陷阱(整型数-128到127的值比较问题)...
    99+
    2022-11-12
  • MySQL中int(10)和int (11)有什么区别
    这篇文章主要讲解了“MySQL中int(10)和int (11)有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL中int(10)和int (11)有什么...
    99+
    2023-06-28
  • mysql中int、bigint、smallint和tinyint的区别是什么
    在MySQL中,int、bigint、smallint和tinyint是不同的整数数据类型,它们之间的区别如下:1. int:int...
    99+
    2023-08-15
    mysql
  • MySQL中int (10) 和 int (11) 的区别
    mysql 中整数数据类型: 不同类型的取值范围: 不同数据类型的默认v显示宽度: 显示的宽度跟负号没有关系,它只在人工设置了 ZEROFILL 属性有效。一旦人工设置了 ZE...
    99+
    2022-11-13
  • php中int和intval有什么区别
    php中int和intval的区别:1、int是指Integer整型,intval是指用于获取变量整数值的函数;2、int的强制转换与intval函数在超出各种类型显示的最大值时,intval如果参数是字符串,则返回字符串中第一个不是数字的...
    99+
    2022-08-08
    php
  • mysql中int和bigint有什么区别
    在MySQL中,int和bigint是两种整数数据类型,它们有以下区别:1. 数据存储范围:int数据类型可以存储的范围是-2147483648到2147483647,而bigint数据类型可以存储的范围是-92233720368547...
    99+
    2023-08-09
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作