以我个人屈指可数的面试面试经历来看,当然我这里主要说的是Java开发相关岗位的面试,面试的内容对于int 和Integer的区别 这类问题讨论的比较多,下面我们就开展开说明一下这类问题吧。
int我们肯定都熟悉吧,是Java当中的一个基本数据类型,这跟C语言当中的int也一样,对于Integer呢,我们或多或少也知道一点,Integer是Java当中的包装类,说白了它就是一个类。
我们首先来回顾以下Java当中的八大基本数据类型,也即byte、short、int、long、float、double、boolean、char,这八大基本数据类型都对应的有其包装类,下面以表格的形式来展现:
基本数据类型 | byte | short | itn | long | float | double | boolean | char |
---|---|---|---|---|---|---|---|---|
二进制位数 | 8 | 16 | 32 | 64 | 32 | 64 | 1 | 16 |
包装类 | Byte | Short | Integer | Long | Float | Double | Boolean | Character |
Java当中已经存在了八大基本数据类型,为什么还要准备其对应的八种包装类型(引用数据类型),很明显是少了不够用喽,我们可以来看看下面的例子:
public class Test{
public static void main(String[] args) {
//在这里调用doSome方法
}
public static void doSome(Object obj){
System.out.println(obj);
}
}
我们可以试想一下有没有这种需求呢,调用doSome()方法需要传进去一个数字,数字是数据基本数据类型的范畴,但是我们的方法参数需要的是一个类对象,也就是说需要一个引用数据类型。由此可见,给基本数据类型对应一个包装类是必要的。
接着我们再来看看装箱和拆箱的概念,我们这里仅以int和Integer来举例。由于我们给int基本数据类型构造了一个包装类,我们也可以把这个包装类理解位一个封装器,把基本数据类型放进去的过程就叫做装箱,而把这个基本数据类型拿出来的过程就叫拆箱。很显然,在这个过程当中,我们使用基本数据类型就比较麻烦了。下面以代码的形式来展示一下这两个过程:
public class HelloWorld {
public static void main(String[] args) {
//装箱
Integer i = new Integer(100);
//拆箱
int j = Integer.valueOf(i);
}
}
其实int对应的包装类都提供了拆箱的方法,即便是这样,我们在使用的过程当中还是觉得麻烦,因此这个自动装箱和自动拆箱的概念就应运而生(PS:实在是太人性化了)。不过需要注意的是,自动装箱和自动拆箱是在JDK1.5之后出现的新特性。我们还是以代码的形式来展现一下:
public class Test{
public static void main(String[] args) {
//自动装箱
Integer i = 100;
//自动拆箱
int j = i;
}
}
以上内容均为个人学习的一点心得,其中的知识点若有错误请留言提醒,若有侵权内容提醒马上删除。