最明的int和Integer的区别
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的区别相关推荐
- int和Integer的区别在哪里
int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象 ...
- java int interger_java面试题之int和Integer的区别
int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引 ...
- java int == integer_java int与integer的区别
int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型 ...
- 二十八、Java中的Int和Integer的区别
@Author:Runsen @Date:2020/6/3 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
- java int与integer的区别
int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型 ...
- int和Integer的区别,哪个在定义变量好
int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引 ...
- JAVA中int 是什么意思,java中int和Integer什么区别
java中int和Integer的区别 一看就懂 int 是基本类型,直接存数值 integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前 ...
- java int和integer的区别_int和Integer的区别
int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引 ...
- 10分钟讲清int 和 Integer 的区别
其实在Java编程中,int和Integer都是非常常用的数据类型,但它们之间存在一些关键的区别,特别是在面向对象编程中.所以接下来,就让我们一起来探讨下关于int和Integer的区别这个问题吧. ...
最新文章
- mysql类 php100_PHP100视频教程26:制作自己的PHP+MYSQL的类
- 怎么设置ppt页面的长度和宽度_在PPT中将照片变裸眼3D效果怎样操作?分享技巧,帮你快速实现...
- 一文深度解析线性表的前世今生!!!
- Python中小括号( )、中括号[ ]和大括号{}分别代表什么?
- VS2010开发ribbon风格的程序
- 3.FreeRTOS学习笔记-任务
- 运行到手机_清理手机垃圾的三个方法,让手机恢复流畅运行
- matlab偶极矩电场强度分布图_课程设计用MATLAB模拟偶极子的电场分布.doc
- CS231n李飞飞计算机视觉 卷积神经网络详解下
- 美通企业周刊 | 世界最长海底公路隧道在青海开工;乐高华南首家品牌旗舰店开业;洲际加速布局粤港澳大湾区...
- Java线程并发协作与任务定时调度
- C语言例题5: 三角形周长面积
- firefox新标签页背景_如何更改或自定义Firefox的“新标签页”
- 零基础搭建基于知识图谱的电影问答系统
- 王学岗——————H265实现低延时投屏,从零实现高清无损投屏(对应第六节课)
- 电子设计常识——阻抗
- 美拍sig算法so分析
- 格式化字符串_列表_元组
- 安川服务器显示030,安川伺服驱动器常见故障报警代码解析
- 谁能够深层次分析一下美剧迷失到底讲的是什么
热门文章
- preg_match_all心得
- 谈表达式树的缓存(7):五种缓存方式的总体分析及改进方案
- 大物实验计算弹性模量_普渡大学amp;橡树岭国家实验室IPJ:强度高达2.4GPa,双相纳米复合结构助力铝合金性能大幅提高!...
- 心态很容易受别人影响_为什么说缠论中的走势中枢容易影响短线买卖交易心态?...
- c#匿名方法用途_C#的匿名方法
- java 对象拷贝属性_使用Java对两个对象的属性进行拷贝
- dods 机器人_胜利之日机器人补丁
- python网络爬虫权威指南 豆瓣_豆瓣Python大牛写的爬虫学习路线图,分享给大家!...
- python global 变量_python 全局变量和局部变量 (例子)
- c语言编辑密码程序,想程序高手求助--用C语言来编辑一个输入密码的程序