目录

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的值缓存范围相关推荐

  1. java int parse_java中Integer.parseInt和Integer.valueOf的区别

    展开全部 他们返回类型的不同是最大的原因: static int parseInt(String s) 将字符串参e69da5e6ba9062616964757a686964616f313333613 ...

  2. 面试官:int和Integer有什么区别?为什么要有包装类?

    作者 | 磊哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 重要说明:本篇为博主<面试题精选-基础篇>系列中的一篇,查看 ...

  3. 面试刷题7:int和Integer有什么区别?

    原始数据类型是java系统的重要组成元素.java号称一切都是对象,原始数据类型除外. 我是李福春,我在准备面试,今天我们来回答一个问题: int和Integer有什么区别? int是原始数据类型,并 ...

  4. int和Integer有什么区别(转)

    目录 了解 理解自动装箱.拆箱 自动装箱 / 自动拆箱在编程实践中有什么需要注意的地方 源码分析 原始类型线程安全 Java 原始数据类型和引用类型局限性 了解 int 是我们常说的整形数字,是 Ja ...

  5. Java经典面试题—— int 和 Integer 有什么区别?谈谈 Integer 的值缓存范围

    典型回答 int 是我们常说的整型数字,是 Java 的 8 个原始数据类型(PrimitiveTypes,boolean.char.byte.short.int.long.float 和 doubl ...

  6. int 和 Integer有什么区别,Integer 有哪些函数方法

    [基本数据类型对象包装类JDk1.5以后的新特性]--[自动拆箱,装箱] 简化书写. Integer i = new Integer(5); 基本数据类型对象包装类,对象创建的简化写法Integer ...

  7. Integer.valueof()和Integer.parseInt()的区别

    Integer. valueOf()可以将基本类型int转换为包装类型Integer,或者将String转换成Integer,String如果为Null或""都会报错. Integ ...

  8. java中Integer.parseInt和Integer.valueOf 的区别

    他们返回类型的不同是最大的原因. static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析.static Integer valueOf(int i) 返 ...

  9. INTEGER PRIMARY KEY AUTOINCREMENT 和 INTEGER PRIMARY KEY 区别

    转自网络,地址不可考,谢谢原作者,如有冒犯,立即删除! Sqlite 中INTEGER PRIMARY KEY AUTOINCREMENT和rowid/INTEGER PRIMARY KEY的使用  ...

最新文章

  1. 2021年春季学期-信号与系统-第十三次作业参考答案-第六小题
  2. python多个for的执行顺序-python_装饰器篇(多个装饰器下的执行顺序)
  3. 小波的秘密5_多分辨率分析和连续小波变换2
  4. 数据库连接报错:Listener refused the connection with the following error: ORA-12505 的解决方法
  5. 树莓派1 安装使用 ZeroTier
  6. Linux命令(15)——hostname、wc、ps、kill
  7. 求 1000 以内的完数
  8. LINUX --基本概念和操作
  9. 对应oracle生成java对象,Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件...
  10. 邮箱伪造漏洞、钓鱼邮件漏洞(未添加SPF导致)
  11. Linux内核深入理解中断和异常(8):串口驱动程序
  12. 使用ztree展示树形菜单结构
  13. 系统限制,JDK也没有什么好办法
  14. Thrift框架简介
  15. java定义数字类型的代码_数字类型内置方法(示例代码)
  16. abb机器人编程指令写字_ABB机器人编程指令与函数
  17. 批处理创建桌面快捷方式
  18. 总结:xshell的一些使用技巧
  19. Matlab 多层(multi-level)小波分析(dwt,dwt2)
  20. 阿里二面一问MySQL就开始野了,抓着底层原理不撒手啊!

热门文章

  1. 前端小技巧:js 动态创建table标签下的tr标签
  2. 微信小程序引入Vant UI
  3. 蓝桥杯:分糖果 JAVA
  4. Openwrt15.05网关后pptp外拨失败的解决办法
  5. 两向量叉乘的计算公式_向量叉乘公式是什么啊
  6. 大学生选购笔记本电脑推荐
  7. cmi编码实验_实验二 - 光纤通信系统线路码型CMI - 编译码实验 - 图文 -
  8. 揭秘黑链市场的地下产业链
  9. SpringBoot用实体接收Get请求参数
  10. Redis基本概念和作用