面试官问我Java中为什么需要基本数据类型?我懵了

本文深入探讨Java中基本数据类型与包装类的概念,解释为何基本类型不被视为对象,以及包装类如何使基本类型具备对象特性。文章还介绍了自动装箱与拆箱的过程,以及Integer缓存机制。

基本数据类型

为什么需要

由于基本数据类型不是对象,所以java并不是纯面向对象的语言,好处是效率较高(全部包装为对象效率较低)。Java是一个面向对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。

有哪些

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

Number是所有数字包装类的父类

自动装箱、自动拆箱(编译器行为)

  • 自动装箱:可以将基础数据类型包装成对应的包装类

  • Integer i = 10000; // 编译器会改为new Integer(10000)

  • 自动拆箱:可以将包装类转为对应的基础数据类型

  • int i = new Integer(1000);//编译器会修改为   int i = new Integer(1000).intValue();

  • 自动拆箱时如果包装类是null,那么会抛出NPE

Integer.valueOf


public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

调用Integer.valueOf时-128~127的对象被缓存起来。所以在此访问内的Integer对象使用==和equals结果是一样的。如果Integer的值一致,且在此范围内,因为是同一个对象,所以==返回true;但此访问之外的对象==比较的是内存地址,值相同,也是返回false。

最后


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值