概述
“Integer和int的区别?Java为什么要设计封装类?”
虽然经常使用,但是很少去关注为什么,导致面试遇到这个问题就懵了。
考察目的
这是一个典型的Java基础问题,本质上来说,这个问题是考察求职者对于面向对象的理解程度。
也是在考察求职者的基本功,越是简单常见的东西,就越能体现求职者的基础扎实程度。这类问题一般是考察1~3年开发经验的同学。
在回答这个问题的时候,尽量从封装类型的特性和功能全方位的去回答。
问题分析
Integer是基本数据类型int的封装类
在Java里面,有八种基本数据类型,他们都有一一对应的封装类型。
基本类型和封装类型的区别有很多,比如:
1、int类型,们可以直接定义一个变量名赋值即可,但是Integer需要使用new关键字创建对象
2、基本类型和Integer类型混合使用时,Java会自动通过拆箱和装箱实现类型转换
3、Integer作为一个对象类型,封装了一些方法和属性,们可以利用这些方法来操作数据。
4、作为成员变量,Integer的默认值是null,而int的默认值是0要是真正列数出来,还可以挖掘更多的差异点。
在Java里面,之所以要对基础类型设计一个对应的封装类型。
是因为Java本身是一门面向对象的语言,对象是Java语言的基础单元,们时时刻刻都在创建对象,也随时都在使用对象,很多时候在传递数据时也需要对象类型,比如像ArrayList、HashMap这些集合,只能存储对象类型,因此从这个点来说,封装类型存在的意义就很大。
其次,封装类型还有很多好处,比如:
1、安全性较好,可以避免外部操作随意修改成员变量的值,保证了成员变量和数据传递的安全性
2、隐藏了实现细节,对使用者更加友好,只需要调用对象提供的方法就可以完成对应的操作
问题解答
Integer和int的区别有很多,简单说3个方面:
1、Integer的初始值是null,int的初始值是0
2、Integer存储在堆内存,int类型是直接存储在栈空间
3、Integer是对象类型,它封装了很多的方法和属性,们在使用的时候更加灵活。至于为什么要设计封装类型,最主要的原因是Java本身是面向对象的语言,一切操作都是以对象作为基础。
比如像集合里面存储的元素,也只支持存储Object类型,普通类型无法通过集合来存储。
总结
因为平时没有总结过,大脑一开始肯定是一篇空白的。
遇到特别基础的问题,先不用急着回答,好好整理一下思路。
找到问题的关键因素,然后以此为切入点去回答,一般是没什么问题的