int 和 Integer 有什么区别,Integer的值缓存范围
目录
int与Integer的基本使用对比
int与Integer的深入对比
int与Integer的基本使用对比
Integer是int的包装类;int是基本数据类型;
Integer变量必须实例化后才能使用;int变量不需要;
Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值;
Integer的默认值是null;int的默认值是0。
int与Integer的深入对比
由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。
Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false
Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)
Integer i = new Integer(100);
int j = 100;
System.out.print(i == j); //true
非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。(因为非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)
Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false
对于两个非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的定义如下,对于-128到127之间的数,会进行缓存,Integer i = 127时,会将127进行缓存,下次再写Integer j = 127时,就会直接从缓存中取,就不会new了。
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);
}
---------------------
作者:houwanle
来源:CSDN
原文:https://blog.csdn.net/houwanle/article/details/81975619
版权声明:本文为博主原创文章,转载请附上博文链接!
int 和 Integer 有什么区别,Integer的值缓存范围相关推荐
- java int parse_java中Integer.parseInt和Integer.valueOf的区别
展开全部 他们返回类型的不同是最大的原因: static int parseInt(String s) 将字符串参e69da5e6ba9062616964757a686964616f313333613 ...
- 面试官:int和Integer有什么区别?为什么要有包装类?
作者 | 磊哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 重要说明:本篇为博主<面试题精选-基础篇>系列中的一篇,查看 ...
- 面试刷题7:int和Integer有什么区别?
原始数据类型是java系统的重要组成元素.java号称一切都是对象,原始数据类型除外. 我是李福春,我在准备面试,今天我们来回答一个问题: int和Integer有什么区别? int是原始数据类型,并 ...
- int和Integer有什么区别(转)
目录 了解 理解自动装箱.拆箱 自动装箱 / 自动拆箱在编程实践中有什么需要注意的地方 源码分析 原始类型线程安全 Java 原始数据类型和引用类型局限性 了解 int 是我们常说的整形数字,是 Ja ...
- Java经典面试题—— int 和 Integer 有什么区别?谈谈 Integer 的值缓存范围
典型回答 int 是我们常说的整型数字,是 Java 的 8 个原始数据类型(PrimitiveTypes,boolean.char.byte.short.int.long.float 和 doubl ...
- int 和 Integer有什么区别,Integer 有哪些函数方法
[基本数据类型对象包装类JDk1.5以后的新特性]--[自动拆箱,装箱] 简化书写. Integer i = new Integer(5); 基本数据类型对象包装类,对象创建的简化写法Integer ...
- Integer.valueof()和Integer.parseInt()的区别
Integer. valueOf()可以将基本类型int转换为包装类型Integer,或者将String转换成Integer,String如果为Null或""都会报错. Integ ...
- java中Integer.parseInt和Integer.valueOf 的区别
他们返回类型的不同是最大的原因. static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析.static Integer valueOf(int i) 返 ...
- INTEGER PRIMARY KEY AUTOINCREMENT 和 INTEGER PRIMARY KEY 区别
转自网络,地址不可考,谢谢原作者,如有冒犯,立即删除! Sqlite 中INTEGER PRIMARY KEY AUTOINCREMENT和rowid/INTEGER PRIMARY KEY的使用 ...
最新文章
- 2021年春季学期-信号与系统-第十三次作业参考答案-第六小题
- python多个for的执行顺序-python_装饰器篇(多个装饰器下的执行顺序)
- 小波的秘密5_多分辨率分析和连续小波变换2
- 数据库连接报错:Listener refused the connection with the following error: ORA-12505 的解决方法
- 树莓派1 安装使用 ZeroTier
- Linux命令(15)——hostname、wc、ps、kill
- 求 1000 以内的完数
- LINUX --基本概念和操作
- 对应oracle生成java对象,Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件...
- 邮箱伪造漏洞、钓鱼邮件漏洞(未添加SPF导致)
- Linux内核深入理解中断和异常(8):串口驱动程序
- 使用ztree展示树形菜单结构
- 系统限制,JDK也没有什么好办法
- Thrift框架简介
- java定义数字类型的代码_数字类型内置方法(示例代码)
- abb机器人编程指令写字_ABB机器人编程指令与函数
- 批处理创建桌面快捷方式
- 总结:xshell的一些使用技巧
- Matlab 多层(multi-level)小波分析(dwt,dwt2)
- 阿里二面一问MySQL就开始野了,抓着底层原理不撒手啊!