[从面试题看问题]数据类型篇

【面试题1】int和Integer有什么区别?

思考1:为什么要有基本类型和包装类型


Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型。但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型。而Integer就是int的包装类型。

下图是JAVA中所以基本类型以及对应包装类型和各自所占用的大小。

image

思考2:包装类型和基本类型的区别


1.声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;

2.存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用;

3.初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null

4.使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到

思考3:包装类型和基本类型的相互转换?


从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。

自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。

自动装箱场景:

List声明的泛型只能为包装类型,将基本类型加入list中发生了自动装箱。

ArrayList<Integer> intList = new ArrayList<Integer>();

intList.add(1); 

自动拆箱场景:

用基本类型接收list中的值。

int number = intList.get(0); 

延伸题1:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值