面试Integer与int区别

本文详细解析了Java中Integer与int的区别,包括默认值、存储方式、数组缓冲区及==与equals的使用场景。强调了Integer是int的封装类,而int为基本数据类型,同时介绍了Java的8种基本数据类型。

Integer与int

两者区别

Integer是int的封装类,默认值 Null,存储引用存储对象地址
int是Java的基本数据类型,默认值0,存储数值

引申
Java的8种基本数据类型:
4个整数(byte,short,int,long)
2个浮点数(float,double)
1个char
1个boolean

Java为每个基本类型封装了对应的类,例如int对应Integer

==与equals

==
对于基本数据类型,表示两个值是否相等
引用类型,表示两个引用地址是否相等

equals
是所有类共有的方法,继承于object类中的equals,你也可以重写该方法。
object类中的equals也是比较引用地址是否相等。
String类中重写的equals是比较引用对象中的字符串是否相等,长度和每个位上的字符相同。

Integer的数组缓冲区

jdk1.8 源码

public static Integer valueOf(int i) {
       //-128到127之间数,从缓冲区中取对象
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
       //不在-128到127之间的数,新建对象
        return new Integer(i);
    }

但前提是用赋值方式进行初始化Integer 引用,下面代码会显示。

编程比较Integer 和 int ,== 与equals 区别

在这里插入图片描述

输出结果
在这里插入图片描述

Integer 初始化

Integer 引用初始化有三种,
一种是Integer n=new Integer();
一种是直接赋值,Integer n=6;
一种是赋给其他引用,Integer m=n;
本文这里只涉及到前两种。其实第三种也很好分析。就是拷贝对象地址。

总结

  • new出来的对象引用,使用‘==’结果都是false
  • =赋值出来的对象引用,使用‘==’,要看值得范围是不是属于[-128,127],如果属于则返回true,否则false。
  • Integer和int,使用==比较时,会进行拆箱操作,使用Integer.intValue值来和int值比较,如果相等,返回ture,否则false

注明:本文自创,如有理解有误的地方,还请多多指正,走过路过给个赞,小编爱你~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值