首页 > 其他分享 >区分int和Integer

区分int和Integer

时间:2024-09-20 17:53:32浏览次数:3  
标签:Java int 区分 数据类型 对象 Integer null

在Java中,`int` 和 `Integer` 是两个不同的类型,尽管它们都用于表示整数。主要的区别在于 `int` 是 `基本数据类型`,`Integer` 是 `包装类`

●  基本数据类型 vs 包装类

        ●  `int` 是Java中的基本数据类型,直接存储数值,不能为 null ,并且在栈上分配内存,性能较高

        ●  `Integer` 是 `int` 的包装类,属于引用类型,可以为 null ,是对象,在堆上分配内存,性能较低

●  默认值

        ● `int` 默认值是 0

        ● `Integer` 默认值是 null 

●  内存分配

        ●  `int` 存储在栈内存中,性能较好,占用4字节

        ●  `Integer` 对象存储在堆内存中,需要额外的内存空间和开销来管理对象

●  null 值处理

        ●  `int` 不能为 null ,只能为一个有效的整数(如 0 、正数、负数等)

        ●  `Integer` 可以为 null ,适合用来表示未赋值或缺失的值

int number = null;        //编译错误,int不能为null
Integer number = null;    //编译正确

●  用法场景

        ●  `int` 更常用于高效数值计算的场景,因为它没有额外的对象开销

        ●  `Integer`  通常用于需要处理 null 值的场景,或与泛型、集合类(如 List<Integer> )一起使用时,因为Java的集合类只支持对象类型

●  自动装箱与拆箱

Java提供了自动装箱和拆箱的机制,允许 `int` 和 `Integer` 之间的自动转换:

        ●  装箱:将基本类型 `int` 自动转换为 `Integer` 对象

        ●  拆箱:将 `Integer` 对象自动转换为 `int` 基本类型

Integer integerObj = 10;    //自动装箱 (int -> Integer)
int intVal = integerObj;    //自动拆箱 (Integer -> int)

●  比较方式

        ●  `int` 使用 `==` 比较值是否相等

        ●  `Integer` 既可以用 `==` 比较引用地址,也可以使用 `.equals()` 来比较值是否相等

        ●  注意:使用 `==` 比较两个 `Integer` 对象时,可能会得到错误结果,因为它比较的是对象的内存地址而不是值

Integer a = 1000;
Integer b = 1000;
System.out.println(a == b);        //false 因为它们是不同的对象
System.out.println(a.equals(b));   //true  因为它们的值相等

int x = 1000;
int y = 1000;
System.out.println(x == y);        //true  因为它比较的是值

需要注意的是,当 `Integer` 的值在 -128~127范围时, `==` 也可能返回 `true` ,因为Java会缓存这个范围内的整数对象

●  适用于泛型

        ●  `int` 不能用于泛型类型整数

        ●  `Integer` 可以用于泛型,例如在 `List<Integer>` 中使用

List<Integer> list = new ArrayList<>();
list.add(10); //只能使用Integer,不能使用int

总结

        ●  `int` 是高效的基本数据类型,适合在不需要表示 null 或使用对象特征的情况下使用

        ●  `Integer` 是包装类,适用于需要表示 null 、使用泛型或对象操作的场景,但性能略低

标签:Java,int,区分,数据类型,对象,Integer,null
From: https://blog.csdn.net/m0_74952561/article/details/142391230

相关文章

  • 【论文阅读笔记】【Hand Pose Estimation-Interacting Hand】 Interacting Attention
    CVPR2022(Oral)读论文思考的问题论文试图解决什么问题?写作背景是什么?问题:如何将图卷积神经网络(GCN)结构应用到双手交互识别上,且能很好地解决双手的遮挡、相似和交互的问题?背景:双手识别的挑战:1.严重的相互遮挡,双手形状类似。2.难以有效地建模交互的上下文信息......
  • Flink 中 Checkpoint 的底层原理和机制
            Flink的Checkpoint机制是ApacheFlink在流式处理中的一个核心特性,保证了分布式数据流处理系统的 容错性。通过定期保存 状态快照(checkpoint),即使在发生故障时,Flink也可以恢复到之前的状态,确保处理的正确性。为了全面解释Flink的Checkpoint底层实现......
  • Python-tkinter界面设计案例---快捷编辑json文件
    前言:为了方便测试员编辑一些json文件信息,我打算提供一个简洁清晰的ui界面来提高工作效率。该ui基于轻量化tkinter实现。大致效果如下图所示:前置环境:python3importtkinterastkfromtkinterimportmessageboximportjsonimportosimport_locale_locale._getdefault......
  • 从一组数(int整型)中找到出现次数最多的数字,并给出出现的次数,python实现
    要从一组整数中找到出现次数最多的数字及其出现的次数,可以使用Python中的collections模块中的Counter类。Counter类可以方便地统计列表中每个元素的出现次数。下面是一个具体的实现示例:fromcollectionsimportCounterdeffind_most_frequent(numbers):  """ ......
  • 兼收并蓄 TypeScript - 类: interface
    源码https://github.com/webabcd/TypeScriptDemo作者webabcd兼收并蓄TypeScript-类:interface示例如下:class\interface.ts{//接口用于定义对象的形状,这个是TypeScript的功能(JavaScript中没有)interfacePerson{readonlyid:number;//只读......
  • AI基础 L22 Uncertainty over Time I 时间的不确定性
    TimeandUncertainty1TimeandUncertaintyStatesandObservations•discrete-timemodels:weviewtheworldasaseriesofsnapshotsortimeslices•thetimeinterval∆betweenslices,weassumetobethesameforeveryinterval•Xt:denotesthese......
  • Java 接口interface
    目录1.定义接口2.实现接口3.多重继承4.抽象方法5.默认方法6.静态方法7.私有方法8.常量在Java中,接口(interface)是一种引用类型,它类似于类(class),但是与类不同的是,接口不能包含任何具体的方法实现(除了默认方法和静态方法之外)。接口定义了一组规则或行为,这些规则由实现该接......
  • COMP3702 Artificial Intelligence
    COMP3702ArtificialIntelligence(Semester2,2024)Assignment2:BeeBotMDPKeyinformation:Due:1pm,Friday20September2024Thisassignmentassessesyourskillsindevelopingdiscretesearchtechniquesforchallengingproblems.Assignment1contrib......
  • AAAI(the Association for the Advance of Artificial Intelligence)近十年研究热点词云
    AAAI(theAssociationfortheAdvanceofArtificialIntelligence)近十年研究热点词云图AAAI近十年(2015-2024)研究热点追踪......
  • 过滤器Filter 与 拦截器Interceptor
    1.Filter过滤器1.1什么是Filter?Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能使用了过滤器之后,要想访问web服务器上的资源,必须先经过滤器,过滤器处理完毕之后,才可以访问对应的资源。......