Java中有八种基本数据类型,Int是其中之一。而Integer是Int的封装,即Integer其实是一个对象。可以通过new来创建一个Integer对象,也可以直接将Int值赋给Integer变量。它们之间的区别如下:

一:Int

Int是Java八种基本数据类型之一,一般大小为4字节32位,取值范围为2^-31—2^31。两个Int类型变量用“==”比较的是内容的大小。

例如:int a = 100;int b = 100;a == b为True。

二:new Integer()

Integer是对Int类型的封装,它是一个对象,可以通过new来常见Integer对象。但是对象通过“==”比较的是对象内存地址。

例如:Integer a = new Integer(100);Integer b = new Integer(100);a == b为False。

三:将Int值赋给Integer变量。

Integer对象除了可以通过new来创建,也可以直接将Int值赋给Integer变量,这是因为系统会自动将这个Int值封装成一个Integer对象。比如:Integer a = 100;实际上的操作是:Integer a = Integer.valueof(100);

这里有一个需要注意的地方:在上面Integer的valueof()方法里面,当Int值范围在-128—127之间时,会通过一个IntegerCache缓存来创建Integer对象;当Int值不在该范围时,直接调用new Integer()来创建对象。因此会产生以下情况:

(1)Integer a = 100;Integer b = 100;a == b为True。因为这两个Integer变量引用的是缓存中的同一个Integer对象。

(2)Integer a = 200; Integer b = 200;a == b为False。这似乎因为这两个Integer变量引用的是通过new创建的两个不同对象。

四:三种变量的相互比较

(1)不管是new创建的Integer对象,还是通过直接赋值Int值创建的Integer对象,它们与Int类型变量通过“==”进行比较时都会自动拆封装变成Int类型,所以Integer对象和Int变量比较的是内容大小。

例如:int a = 100;Integer b = 100;Integer c = new Integer(100);a == b == c为True。

(2)new创建的Integer对象和直接赋Int值创建的Integer对象相互比较

这两种Integer对象通过“==”比较的都是内存地址。

(3)赋Int值创建的Integer对象相互比较

当Int值在-128—127之间时,两个Integer变量引用的是IntegerCache中的同一个对象,比较的内存地址相同。

当Int值不在以上范围时,两个Integer对象都是通过new创建的,比较的内存地址不同。

Java中Int、Integer、new Integer()之间的区别相关推荐

  1. Java中List和Map接口之间的区别

    列表与地图界面 (List vs Map interface) Here, we will see how List differs from Map interface in Java and we ...

  2. JAVA中的Exception和Error之间的区别

    请对比Exception和Error,另外,运行时异常与异常有什么区别? 典型回答: Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例可以被抛 ...

  3. 016 Java中 int、Integer和 new Integer() 使用==比较

    Java中 int.Integer和 new Integer() 使用==比较 int则是java的一种基本数据类型,其定义的是基本数据类型变量 :Integer是int的包装类,其定义的是引用类型变 ...

  4. Java 中 int和Integer比较

    下文笔者讲述java中int和Integer类型的比较,如下所示 int和Integer类型比较 1:Integer是int的包装类,int则是java的一种基本数据类型 2:Integer变量必须实 ...

  5. Java中int和Integer的区别

    int 是基本类型,直接存数值 integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者>>integer 是后者(也就是一个 ...

  6. JAVA中int 是什么意思,java中int和Integer什么区别

    java中int和Integer的区别  一看就懂 int 是基本类型,直接存数值 integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前 ...

  7. java中int与char之间的互相转化

    引言 在介绍java中int与char之间的互相转化之前,让我们先简单的回顾一些会涉及到的知识. 数据类型 在介绍int与char的转换之前,我们先来回顾一下java中的基本数据类型: 类型 大小 包 ...

  8. JAVA中int、String的类型转换(亲测)

    int -> String int i=12345; String s=""; 第一种方法:s=i+""; 第二种方法:s=String.valueOf( ...

  9. Java中int和short的取值范围_java中short、int、long、float、double取值范围

    1. 基本类型:int 二进制位数:32 包装类:java.lang.Integer 最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方) 最大值:Integer. ...

  10. 关于java中int类型的取值范围等问题

    java中int类型取值范围问题 java中int的类型占4个字节,与操作系统无关,要弄明白int的取值范围问题. 首先,我们来看一下byte的取值范围 byte 大小一个字节. 如:1111 111 ...

最新文章

  1. CVPR2021最佳论文:当GAN遇到3D场景,无需监督就学会“动态抠图”、360度展示对象...
  2. 爱立信前CEO Hans Vestberg成为Verizon三巨头之一
  3. 算法(5) 归并排序
  4. vty 虚拟终端连接 line vty 0 4 和line vty 5 15 区别
  5. 一个无法捕获ADO.NET Dataset的内存错误
  6. 橱柜高度与身高对照表_橱柜高度与身高公式是什么
  7. 自定义的调试函数clr/c++
  8. Maven-生命周期
  9. java中字符串的精确匹配_Java最佳实践–字符串性能和精确字符串匹配
  10. Tips--Anaconda安装TensorFlow报错ImportError: DLL load failed
  11. (31)FPGA面试技能提升篇(CAN)
  12. 职场新人如何高效办公?这10款软件帮到你!
  13. 2022G3锅炉水处理上岗证题库及答案
  14. 如何购买 iFace
  15. 3-19JavaScript
  16. linux系统课程ubuntu视频教程
  17. SparkStreaming可视化之Wisp
  18. STM32控制启动步进电机
  19. Rect 和 Bounds
  20. iOS 堆栈获取异常分析

热门文章

  1. OpenGL学习脚印:立方体纹理和天空包围盒(Cubemaps And Skybox)
  2. PointNet++:
  3. 深浪计算机设备有限公司,智能工业计算机(嵌入式工业计算机)
  4. word怎么改一张纸的方向_word单页怎么改变纸张方向
  5. mysql将小数转换成百分比_SQL语句小数变成百分数
  6. 你女朋友都能看懂的“三握四挥”
  7. 你没看过的北京丽泽SHOU概念动画!
  8. java 文件打包zip_java 多个文件打包zip
  9. 免费的python编辑器_《免》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  10. Maven之生命周期和插件