int和Integer的区别

1、Integer是int的包装类,int则是java的一种基本数据类型 
2、Integer变量必须实例化后才能使用,而int变量不需要 
3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 
4、Integer的默认值是null,int的默认值是0

延伸: 
关于Integer和int的比较 
1、由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。

Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false

2、Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)

Integer i = new Integer(100);
int j = 100;
System.out.print(i == j); //true

3、非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。(因为 ①当变量值在-128~127之间时,非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同;②当变量值在-128~127之间时,非new生成Integer变量时,java API中最终会按照new Integer(i)进行处理(参考下面第4条),最终两个Interger的地址同样是不相同的)

Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false

4、对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false

Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true
Integer i = 128;
Integer j = 128;
System.out.print(i == j); //false

对于第4条的原因: 
java在编译Integer i = 100 ;时,会翻译成为Integer i = Integer.valueOf(100);,而java API中对Integer类型的valueOf的定义如下:

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

java对于-128到127之间的数,会进行缓存,Integer i = 127时,会将127进行缓存,下次再写Integer j = 127时,就会直接从缓存中取,就不会new了

如果有错误的地方,还请指正。

参考: 
http://blog.csdn.net/you23hai45/article/details/50734274 
http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html

最明的int和Integer的区别相关推荐

  1. int和Integer的区别在哪里

    int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型  2.Integer变量必须实例化后才能使用,而int变量不需要  3.Integer实际是对象 ...

  2. java int interger_java面试题之int和Integer的区别

    int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引 ...

  3. java int == integer_java int与integer的区别

    int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型 ...

  4. 二十八、Java中的Int和Integer的区别

    @Author:Runsen @Date:2020/6/3 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  5. java int与integer的区别

    int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型 ...

  6. int和Integer的区别,哪个在定义变量好

    int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引 ...

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

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

  8. java int和integer的区别_int和Integer的区别

    int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引 ...

  9. 10分钟讲清int 和 Integer 的区别

    其实在Java编程中,int和Integer都是非常常用的数据类型,但它们之间存在一些关键的区别,特别是在面向对象编程中.所以接下来,就让我们一起来探讨下关于int和Integer的区别这个问题吧. ...

最新文章

  1. mysql类 php100_PHP100视频教程26:制作自己的PHP+MYSQL的类
  2. 怎么设置ppt页面的长度和宽度_在PPT中将照片变裸眼3D效果怎样操作?分享技巧,帮你快速实现...
  3. 一文深度解析线性表的前世今生!!!
  4. Python中小括号( )、中括号[ ]和大括号{}分别代表什么?
  5. VS2010开发ribbon风格的程序
  6. 3.FreeRTOS学习笔记-任务
  7. 运行到手机_清理手机垃圾的三个方法,让手机恢复流畅运行
  8. matlab偶极矩电场强度分布图_课程设计用MATLAB模拟偶极子的电场分布.doc
  9. CS231n李飞飞计算机视觉 卷积神经网络详解下
  10. 美通企业周刊 | 世界最长海底公路隧道在青海开工;乐高华南首家品牌旗舰店开业;洲际加速布局粤港澳大湾区...
  11. Java线程并发协作与任务定时调度
  12. C语言例题5: 三角形周长面积
  13. firefox新标签页背景_如何更改或自定义Firefox的“新标签页”
  14. 零基础搭建基于知识图谱的电影问答系统
  15. 王学岗——————H265实现低延时投屏,从零实现高清无损投屏(对应第六节课)
  16. 电子设计常识——阻抗
  17. 美拍sig算法so分析
  18. 格式化字符串_列表_元组
  19. 安川服务器显示030,安川伺服驱动器常见故障报警代码解析
  20. 谁能够深层次分析一下美剧迷失到底讲的是什么

热门文章

  1. preg_match_all心得
  2. 谈表达式树的缓存(7):五种缓存方式的总体分析及改进方案
  3. 大物实验计算弹性模量_普渡大学amp;橡树岭国家实验室IPJ:强度高达2.4GPa,双相纳米复合结构助力铝合金性能大幅提高!...
  4. 心态很容易受别人影响_为什么说缠论中的走势中枢容易影响短线买卖交易心态?...
  5. c#匿名方法用途_C#的匿名方法
  6. java 对象拷贝属性_使用Java对两个对象的属性进行拷贝
  7. dods 机器人_胜利之日机器人补丁
  8. python网络爬虫权威指南 豆瓣_豆瓣Python大牛写的爬虫学习路线图,分享给大家!...
  9. python global 变量_python 全局变量和局部变量 (例子)
  10. c语言编辑密码程序,想程序高手求助--用C语言来编辑一个输入密码的程序