面试中会问道int和Integer的区别,这里我们详细说一下

  • Integer是int的包装类;int是基本数据类型。
  • Integer变量必须实例化后才能使用;int变量不需要。
  • Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值。
  • 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()生成的变量指向堆中新建的对象,两者在内存中的地址不同

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);
}

如果有收获!!! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客

int和Integer有什么区别相关推荐

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

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

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

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

  3. int和Integer有什么区别?

    可参考:http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html 从Java 5开始引入了自动装箱/拆箱机制,使得二者可 ...

  4. int 和 Integer 有什么区别

    Java 提供两种不同的类型:引用类型和原始类型(或内置类型). Int是java的原始数据类型, Integer是java为int提供的封装类. Java为每个原始类型提供了封装类. 原始类型封装类 ...

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

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

  6. int 和 Integer 有什么区别,Integer的值缓存范围

    目录 int与Integer的基本使用对比 int与Integer的深入对比 int与Integer的基本使用对比 Integer是int的包装类:int是基本数据类型: Integer变量必须实例化 ...

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

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

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

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

  9. 基础回顾(正则、循环、和、 int和Integer、String /StringBuffer、Array和ArrayList、值传递和引用传递、 Lamda、java8)

    1. 正则表达式 1.1 Java中是如何支持正则表达式操作的? Java中的String类提供了支持正则表达式操作的方法,包括:matches().replaceAll().replaceFirst ...

  10. Java int 和 Integer 互转原理

    文章目录 Java int 和 Integer 互转 Java Integer.int 与 new Integer() Integer.valueOf() new Integer() 为什么 Java ...

最新文章

  1. 第一天课程:第一个python程序print say hello
  2. springboot 访问html_Spring Boot中使用Spring Security进行安全控制
  3. wyh 的 Code Style
  4. 网络流优化:-1优化与当前弧优化
  5. resteasy_Tomcat 7上具有RESTeasy JAX-RS的RESTful Web服务– Eclipse和Maven项目
  6. android 组件路由框架,XRouter:组件化路由框架
  7. android 资料文档共享
  8. 案例:使用BeautifuSoup4的爬虫
  9. MySQL 8.0.12 有什么新内容?
  10. db2 linux 导入数据_MySQL数据的导出和导入(Linux)
  11. 【完美】SpringBoot中使用注解来实现 Redis 分布式锁
  12. Layui导航、面包屑
  13. django web app_妹子用半天时间开发一个员工管理系统,没错django就是这么强悍
  14. 电脑右击文件夹无反应
  15. Miracast/WIDI浅谈
  16. Linux 下载GCC
  17. linux第八周实验
  18. 服务器保修服务时间查询地址
  19. 在office2003中打开office2007文件的补丁(.docx文件,pptx文件打开方法)
  20. 【小程序开发】开发一个短信登录验证(后端采用springboot)

热门文章

  1. 30天自制操作系统——第一天到第二天
  2. Android onKeyDown事件 监听不到Home键 可以监听到back键
  3. mysql中+desc用法_mysql desc(DESCRIBE)命令实例讲解
  4. 以太网交换机和路由器的区别(转载)
  5. 影响世界的100条管理名言
  6. 自学七天,我是如何通过软考系统架构师
  7. 带有资源混淆的打补丁过程
  8. video截取视频内容作为封面
  9. Flashpaper去掉toolbar,去掉打印的方法
  10. [转]阮杰:从散户到身价过亿的私募掌门人