有关java中的自动拆箱和装箱

JAVA中的自动拆箱和装箱

java中的自动拆箱和装箱是jdk1.5及之后的新特性,我一直没太理解是怎么一回事,最近抽空终于把它的相关知识点整理了一下。
首先让我们了解一下什么是Integer类,从Integer入手:

Integer

Integer 类在对象中包装了一个基本类型int的值。Integer类型的对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,同时还提供了其他一些处理int类型时非常有用的常量和方法。

构造方法

Integer类有两种构造方法:
Integer(int number)
Integer(String str)
*这里注意要用数值型String变量作为参数,如123,否则将会抛出NumberFormatException异常。
下面用一段代表来说明一下:

 // 方式1 Integer(int number)
        int i=100;
        Integer a = new Integer(i);
        System.out.println("a:"+a);
                
        //方式2 Integer(String str)
        String s = new String("100");
        /*
         *  NumberFormatException  
         *   String s = new String("abc");
         */
        Integer b=new Integer(s);
        System.out.println("b:"+b);

这里运行结果为:
a:100
b:100

常见类

Integer类的常用方法如下
在这里插入图片描述

好了,有了以上的基础知识,我们再来看什么是java的自动装箱和拆箱;

装箱和拆箱

其实拆装箱我们就可以想象为把东西装进箱子里,然后从箱子里拆出来,什么意思呢?我们来结合代码看
先看第一段代码:

Integer a = new Integer(66);

这里的a我们知道是一个对象引用,引用了Integer这个类定义的对象,这里的66是类Integer的构造方法中的参数。当然我们也可以这样写:

int a = 66;

也就是使用基本数据类型直接复制即可,
现在使用integer这个包装类就相当于把数字装进箱子里一样,这样就是一个对象,而不是一个简单的数值类型了,我们再看这个

int i = a.intValue();

上面的类型就是把integer这个包装类型的数据转换成int类型的基本数据类型,这个过程就好比把数据从箱子里拿出来,也就是拆箱,还原成原本的int类型!
这就是拆箱和装箱!
那什么是自动装箱和拆箱呢?

自动装箱和拆箱

 Integer b = 88;

这个就是自动装箱了,自动将数值转成integer类型的数据
int d = b;
这个就是自动拆箱,将这个数据自动转换成int型,然后赋值给d这个变量。

有关自动装箱和拆箱的问题

当然,自动装箱和拆箱这里还有些问题需要我们注意
先看这段代码

Integer a = 1100;
        Integer b = 1100;
        System.out.println(a == b);

这段代码的结果是什么呢?
在这里插入图片描述
居然报错了!
这里隐含了一个知识点

a 和 b的取值只要在-128到127之间,那么他们指的就是同一个,如果是在这个范围之外的数字,就指的不是同一个值,那结果就是false了


猜你喜欢

转载自blog.csdn.net/qq_41040989/article/details/88741415