Java中int和Integer的区别

 更新时间:2022年05月13日 09:53:46   作者:Java中文社群  
这篇文章主要介绍的是 Java中int和Integer的区别,Java 是一种强数据类型的语言,因此所有的属性必须有一个数据类型,下面文章基于Java详细int和Integer有何区别,需要的朋友可以参考一下

前言:

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

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

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

1、基本数据类型

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

  • 4 种整型:intshortlongbyte
  • 2 种浮点类型:floatdouble
  • 字符类型:char
  • 真假类型:boolean

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

2、包装类及其作用

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

2.1包装类的作用

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

基础类型包装类型
intInteger
shortShort
byteByte
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

3、int 和 Integer 的区别

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

  • 数据类型不同int是基础数据类型,而 Integer是包装数据类型;
  • 默认值不同int的默认值是 0,而 Integer的默认值是 null;
  • 内存中存储的方式不同:int 在内存中直接存储的是数据值,而 Integer实际存储的是对象引用,当 new 一个 Integer 时实际上是生成一个指针指向此对象;
  • 实例化方式不同:Integer 必须实例化才可以使用,而 int 不需要;
  • 变量的比较方式不同:int 可以使用 == 来对比两个变量是否相等,而 Integer一定要使用 equals 来比较两个变量是否相等。

4、总结

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

到此这篇关于 Java中intInteger的区别的文章就介绍到这了,更多相关 Java中的int和Integer内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何配置feign全局log

    如何配置feign全局log

    这篇文章主要介绍了如何配置feign全局log,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Netty分布式客户端处理接入事件handle源码解析

    Netty分布式客户端处理接入事件handle源码解析

    这篇文章主要为大家介绍了Netty源码分析客户端流程处理接入事件handle创建,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • 解决springboot 无法配置多个静态路径的问题

    解决springboot 无法配置多个静态路径的问题

    这篇文章主要介绍了解决springboot 无法配置多个静态路径的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java实现翻转单词顺序列

    java实现翻转单词顺序列

    这篇文章主要为大家详细介绍了java实现翻转单词顺序列,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Spring Boot如何配置yml配置文件定义集合、数组和Map

    Spring Boot如何配置yml配置文件定义集合、数组和Map

    这篇文章主要介绍了Spring Boot 优雅配置yml配置文件定义集合、数组和Map,包括Spring Boot yml配置文件定义基本数据类型和引用数据类型的方式,需要的朋友可以参考下
    2023-10-10
  • Java小程序赛马游戏实现过程详解

    Java小程序赛马游戏实现过程详解

    这篇文章主要介绍了Java小程序赛马游戏实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Sentinel熔断规则原理示例详解分析

    Sentinel熔断规则原理示例详解分析

    这篇文章主要介绍了Sentinel熔断规则,采用了示例代码的方式对Sentinel熔断规则进行了详细的分析,以便广大读者朋友们更易理解,有需要的朋友可以参考下
    2021-09-09
  • 关于java String中intern的深入讲解

    关于java String中intern的深入讲解

    这篇文章主要给大家介绍了关于java String中intern的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 详解Java七大阻塞队列之SynchronousQueue

    详解Java七大阻塞队列之SynchronousQueue

    SynchronousQueue不需要存储线程间交换的数据,它的作用像是一个匹配器,使生产者和消费者一一匹配。本文详细讲解了Java七大阻塞队列之一SynchronousQueue,需要了解的小伙伴可以参考一下这篇文章
    2021-09-09
  • springcloud ribbon 饥饿加载原理解析

    springcloud ribbon 饥饿加载原理解析

    这篇文章主要介绍了springcloud ribbon 饥饿加载原理解析,饥饿加载特别适用于对启动性能要求较高的场景,如系统启动初期就有高并发请求的情况,感兴趣的朋友跟随小编一起学习吧
    2024-04-04

最新评论