八大基本数据类型对应的包装类

  以我个人屈指可数的面试面试经历来看,当然我这里主要说的是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;
    }
}


以上内容均为个人学习的一点心得,其中的知识点若有错误请留言提醒,若有侵权内容提醒马上删除。

猜你喜欢

转载自blog.csdn.net/pf6668/article/details/108816016
今日推荐