首页 > 编程语言 >Java 中 int 和 Integer 的区别,为什么要有包装类?

Java 中 int 和 Integer 的区别,为什么要有包装类?

时间:2022-12-22 10:04:16浏览次数:37  
标签:Java int 数据类型 包装 类型 Integer

前言

Java 是一门强类型语言,所以在 Java 中,所有的数据都必须有自己的数据类型,这就像 “山姆商店” 的会员制一样,你是会员才能进入,在 Java 中也是如此,每一个数据必须有自己的数据类型。

回归正题

int 和 Integer 的区别是一个非常基础的问题,但是在面试的过程中却会经常遇到,下面就来梳理一下 int 和 Integer 的区别,以及使用包装类的好处。

基本数据类型

在 Java 中,一共有 8 中基本数据类型,而基本数据类型,指的是具有原子性的不可再被拆分的数据类型

boolean
byte
char
short
int
long
float
double

其中 boolean 类型表示判断真假,char 类型表示的是 Unicode 编码中的字符类型,整型类型:byte(1字节),short(2字节),int(4字节),long(8字节),表示浮点数类型:float(4字节),double(8字节)。

基本数据类型的值都是直接被存放在内存中的,通过内存地址可以直接拿到,并且该内存空间也只能存放当前数据类型的数据,而 int 就是其中一种数据类型。

包装类

在 Java 里,每一种基本数据类型都对应着一个包装类。

基础类型         包装类型

boolean Boolean
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double

因为在 Java 中,秉持着一切皆 “对象” 的理念,我们经常需要进行对对象的操作,比如 hashCode() 获取哈希值,getClass()获取类等等,而诸如此类的操作我们就可以通过包装类完成,因为包装类就是一个对象。

包装类的作用:

在 Java 中每个基本数据类型都封装了其对应的包装类,而 int 类型对应的包装类就是 Integer,包装类的存在完成了基本数据类型无法完成的事,比如说作为泛型类型参数,序列化,类型转化,高频区间数据缓存等等。

下面来总结一下 int 和 Integer 之间的区别

int 和 Integer 的区别

int 和 Integer 的区别主要体现在以下几点:

1.数据类型不同:int 是基本数据类型,而 Integer 是包装类数据类型。
2.默认值不同:int 类型的默认值是 0,而 Integer 类型的默认值是 null。
3.内存中存储方式不同:int 类型存储是在内存中直接存储值,而 Integer 类型在内存中存储的其实是对象引用,Integer 在实例化阶段生成了一个引用指向了 Integer 对象。
4.实例化方式不同:int 不需要实例化可以直接定义,而 Integer 需要使用 new 关键字进行实例化。
5.变量的比较方式不同:int 可以用 “==” 进行值的比较,而 Integer 需要使用 “equals” 进行比较。

总结

总结一下,int 和 Integer 的区别有 5 点:数据类型不同,默认值不同,内存存储方式不同,实例化不同,变量比较不同。

而 Integer 作为包装类,可以做到 int 做不到的事,比如作为泛型类型的参数,序列化,类型转换,高频区间数据缓存等。

标签:Java,int,数据类型,包装,类型,Integer
From: https://blog.51cto.com/u_15733182/5962354

相关文章

  • MyEclipse技术全面解析——不脱离Java IDE的Maven项目管理
    从JavaIDE内部管理项目和构建,标准的项目结构、简化的POM编辑和内置于MyEclipse菜单中的启动命令使Maven项目管理触手可及。MyEclipsev2022.1.0正式版下载通过单击管理M......
  • JavaSE-day04-基本概念-数据类型&标识符&键盘录入
    Java基本概念本章包含数据类型,标识符以及键盘录入!数据类型数据类型的分类1.基本数据类型Java中基本数据类型分为4类8种。1.整数:byte,short,int,long细节:整数的......
  • JavaSE-day01-Java入门
    Java的三大使用平台Java有三大平台:JavaSE,JavaEE,JavaMEJavaSE介绍JavaSE是Java语言的标准版,用于桌面应用的开发,是其他两个版本的基础。桌面应用用户只要打......
  • Euclidea3.6 Construct a line passing through the midpoints of the trapezoid base
    Constructalinepassingthroughthemidpointsofthetrapezoidbases.证明:过点\(F\)作\(h\parallelAB\)\(\triangleBFI\sim\triangleBCD\)、\(\triang......
  • Java学习笔记4
    1.循环进阶1.1无限循环概念:​ 循环一直停不下来,又叫死循环。for格式:for(;;){循环语句;}while格式:while(true){循环语句;}do...while格式:do{......
  • 十、接口(interface)
    十、接口(interface)10.1、楔子10.1.1、多态的含义在java里,多态是同一个行为具有不同表现形式或形态的能力,即对象多种表现形式的体现,就是指程序中定义的引用变量所指向的......
  • Java 程序员常用资源网站集合
    搜索资源网站学习技术过程我们经常需要使用搜索引擎来检索资料,国内常用的也就是某度了。当然有条件的话,搜索引擎首先还是推荐使用Google,如果没办法使用,可以使用以下几个作......
  • Java学习
    下载 一般使用Java8或Java11 https://www.oracle.com/cn/java/technologies/downloads/#java8-windows安装安装路径不要有空格或中文https://zhuanlan.zhihu.com/p/3......
  • Javaweb 登陆与验证码
    本次记录分角色登陆以及验证码的Servlet。1.登陆验证<html><%--CreatedbyIntelliJIDEA.User:jiachenglinDate:2022/11/11Time:14:31Tochangethis......
  • javaScript中??和?.简记
    ??表示:只有当左侧为null和undefined时,才会返回右侧的数;空值合并操作符(??)是一个逻辑操作符,当左侧的操作数为[null]或者[undefined]时,返回其右侧操作数,否则返回左侧操作数;......