作者 | 磊哥

来源 | Java面试真题解析(ID:aimianshi666)

转载请联系授权(微信ID:GG_Stone)

重要说明:本篇为博主《面试题精选-基础篇》系列中的一篇,查看系列面试文章请关注我。Gitee 开源地址:https://gitee.com/mydb/interview

Java 是一种强数据类型的语言,因此所有的属性必须有一个数据类型。就像麦德龙超市一样,想要进去购物,先要有一个会员卡才行(刷卡入内)。

PS:Java 10 有了局部变量类型推导,可以使用 var 来替代某个具体的数据类型,但在字节码阶段,Java 的变量仍有着明确的数据类型,且局部变量类型推导有着很多限制和不完善之处,也不是目前主流的应用版本,所以这里不做深入讨论。

回到主题,要理解 int 和 Integer 的区别,要先从 Java 的基础数据类型说起。

基本数据类型

在 Java 中,一共有 8 种基本类型(primitive type),其中有 4 种整型、2 种浮点类型、1 种用于表示 Unicode 编码的字符类型 char 和 1 种用于表示真假值的 boolean 类型。

  • 4 种整型:int、short、long、byte

  • 2 种浮点类型:float、double

  • 字符类型:char

  • 真假类型:boolean

基本数据类型是指不可再分的原子数据类型,内存中直接存储此类型的值,通过内存地址即可直接访问到数据,并且此内存区域只能存放这种类型的值,int 就是 Java 中一种常用的基础数据类型

包装类及其作用

因为 Java 的设计理念是一切皆是对象,在很多情况下,需要以对象的形式操作,比如 hashCode() 获取哈希值,或者 getClass() 获取类等。

包装类的作用

在 Java 中每个基本数据类型都对应了一个包装类,而 int 对应的包装类就是 Integer包装类的存在解决了基本数据类型无法做到的事情泛型类型参数、序列化、类型转换、高频区间数据缓存等问题

基础类型 包装类型
int Integer
short Short
byte Byte
long Long
float Float
double Double
char Character
boolean Boolean

int 和 Integer 的区别

int 和 Integer的区别主要体现在以下几个方面:

  1. 数据类型不同:int 是基础数据类型,而 Integer 是包装数据类型;

  2. 默认值不同:int 的默认值是 0,而 Integer 的默认值是 null;

  3. 内存中存储的方式不同:int 在内存中直接存储的是数据值,而 Integer 实际存储的是对象引用,当 new 一个 Integer 时实际上是生成一个指针指向此对象;

  4. 实例化方式不同:Integer 必须实例化才可以使用,而 int 不需要;

  5. 变量的比较方式不同:int 可以使用 == 来对比两个变量是否相等,而 Integer 一定要使用 equals 来比较两个变量是否相等。

总结

Integer 是 int 的包装类,它们的区别主要体现在 5 个方面:数据类型不同、默认值不同、内存中存储的方式不同、实例化方式不同以及变量的比较方式不同。包装类的存在解决了基本数据类型无法做到的事情泛型类型参数、序列化、类型转换、高频区间数据缓存等问题。

参考 & 鸣谢

《码出高效:Java开发手册》

关注公众号:Java面试真题解析,查看更多 Java 面试题。

面试官:int和Integer有什么区别?为什么要有包装类?相关推荐

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

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

  2. 面试官问:Integer 如何实现节约内存和提升性能的?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:Byte_Liu 来源:https://urlify.cn/ ...

  3. 面试官:说说 typeof 与 instanceof 区别?

    一.typeof typeof 操作符返回一个字符串,表示未经计算的操作数的类型 使用方法如下: typeof operand typeof(operand) operand表示对象或原始值的表达式, ...

  4. int和Integer有什么区别?

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

  5. int 和 Integer 有什么区别

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

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

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

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

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

  8. 面试官:谈谈equals() 和 == 的区别

    引言 谈谈equals() 和 == 的区别,这是一个非常经典的问题,不是特别难,面试也时有问道:但是很多小伙伴在面试时脑子却一片空白,痛失offer:所以在这里我详细介绍一下这两者的区别,希望对你能 ...

  9. 【运维面试】面试官:reids和memcache的区别?

    前言 redis和memcache的区别在面试中也经常会被提到,今天我们来看看redis与memcache的知识 概念 memcached: 一款开源的,高性能,分布式的内存系统 redis:一个开源 ...

最新文章

  1. 某程序员吐槽自己追求某字节HR,暧昧半年,见面后却被告知是普通朋友!心态已崩!网友:别追HR!道行太深!...
  2. 编写你的第一个 Flutter App
  3. 如何对单手和双手协同运动方向进行神经表征和解码?北理工研究团队给出了相关方案
  4. c语言两种加法,两个超长正整数的加法
  5. Linux入门笔记——系统目录结构
  6. 使用 file_get_contents 获取网站信息报错failed to open stream: HTTP request failed!
  7. mysql文件写入和读出数据库
  8. android studio 便携式wlan热点 网络名称_手机移动网络共享,还可以这么玩,你知道吗?...
  9. Java多线程 ReentrantLock、Condition 实现生产者、消费者协作模式
  10. EditPlus中文绿色破解版安装
  11. 实例6.1 六度空间 (30 分)+C语言实现
  12. 目前能利用的5个视频模块
  13. 安防想要抢食智能家居大蛋糕 应该如何转型?
  14. 我的世界Mod整合包中的Mod下载
  15. 常见java空指针异常
  16. 前端谷歌浏览器基本介绍及前后端分离原理分析
  17. 让网站加载速度更快的10种方法
  18. FreeEIM 网站地图 A
  19. 【宝塔面板建站】10分钟windows宝塔面板一键部署安装wordpress,无需服务器和域名本地运行(保姆级图文)
  20. 本人开始提供NOD32 相关升级及咨询服务

热门文章

  1. 4n35光耦引脚图_光耦继电器的主要特点以及输入特性!先进光半导体
  2. 请给出计算231-1的python表达式_【填空题】计算2 32 -1的Python表达式可以书写为____...
  3. jsp测试mysql_Jsp登陆与MySQL对接验证
  4. logstash-input-redis插件使用详解
  5. Nodejs,Npm,React安装教程
  6. Problem B: C语言习题 学生成绩输入和输出
  7. 【Spark】Spark-空RDD判断与处理
  8. 运行Hadoop自带的wordcount单词统计程序
  9. 阿里云服务器配置开发环境第五章:Centos7.3切换为iptables防火墙
  10. servlet的由来