当前位置: 首页 > 后端技术 > Java

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

时间:2023-04-02 09:52:52 Java

重要提示:本文为博主《面试题精选-基础篇》系列文章之一,请关注我查看系列专访文章。Gitee开源地址:https://gitee.com/mydb/interviewJava是一种强数据类型的语言,所以所有的属性都必须有一个数据类型。就像麦德龙超市一样,要想购物,首先要有会员卡(刷卡进入)。PS:Java10有局部变量类型推导,可以用var来代替具体的数据类型,但是在字节码阶段,Java变量仍然有明确的数据类型,局部变量类型推导有很多限制和限制。不完善的地方不是目前主流的应用版本,这里就不深入讨论了。回到正题,要理解int和Integer的区别,首先要从Java的基本数据类型说起。基本数据类型在Java中,一共有8种原始类型,包括4种整数,2种浮点类型,1种字符类型char用于表示Unicode编码,1种用于表示true和false值的boolean类型。4种整数类型:int、short、long、byte2种浮点类型:float、double字符类型:char真假类型:boolean类型直接存放在内存中,可以通过内存地址直接访问数据,而这个内存区只能存放这个类型的值。Int是Java中常用的基本数据类型。包装类及其作用因为Java的设计理念是万物皆对象,所以很多时候需要以对象的形式进行操作,比如hashCode()获取哈希值,或者getClass()获取获取类等包装类的作用在Java中,每一种基本数据类型对应一个包装类,int对应的包装类是Integer。包装类的存在解决了基本数据类型做不到的事情。泛型类型参数、序列化、类型转换、高频区间数据缓存等问题。基本类型封装类型intIntegershortShortbyteBytelongLongfloatFloatdoubleDoublecharCharacterbooleanBooleanBooleanint和Integerint和Integer的区别主要体现在以下几个方面:数据类型不同:int是基本数据类型,Integer是封装数据类型;默认值不同:int的默认值为0,Integer的默认值为null;在内存中的存储方式不同:int直接在内存中存储数据值,而Integer实际存储的是对象引用,newanInteger时实际上生成了一个指向该对象的指针;实例化方式不同:Integer必须实例化才能使用,而int则不需要;变量比较方法不同:int可以用==来比较两个变量是否相等,而Integer必须用equals来比较两个变量是否相等。总结Integer是对int的包装类,它们的区别主要体现在五个方面:数据类型不同、默认值不同、在内存中的存储方式不同、实例化方式不同、变量的比较方式不同。包装类的存在解决了泛型类型参数、序列化、类型转换、高频区间数据缓存等基本数据类型无法做到的问题。Reference&Acknowledgment《码出高效:Java开发手册》关注公众号:Java面试真题解析,查看更多Java面试题。