首页 热点资讯 义务教育 高等教育 出国留学 考研考公

Java入门:装箱与拆箱

发布网友 发布时间:21小时前

我来回答

1个回答

热心网友 时间:17小时前

引言

在这篇文章中,我们将使用一些示例,来学习Java中的装箱与拆箱操作。原始数据类型的处理是不同的,因此引入了包装类,其中有两个组件起着作用,即自动装箱和解箱。

为何需要原始类型与包装类?

Java是基于面向对象设计的,因此,每创建一次包装类型就会放到堆里,然后通过栈中的地址来找寻堆中的对象。那么像经常使用的int、double、float等基础类型,每次都创建为对象会变的效率低下。因此就出现了基本类型,直接将变量值存在栈中。但是基本类型不具有对象性质,当我们使用集合的时候,又可以使用其包装类型。当然,我们每次使用的时候,例如往集合中添加基本类型,Java会自动装箱为包装类,后面的示例也会演示到。

Java装箱-原始类型到包装类对象

所谓装箱,就是Java编译器会自动将原始类型转换为其相应的包装类对象。示例:

inta=10;//装箱操作Integerb=a;

在使用Java集合时,装箱有很大的优势。

示例1:使用Java集合时的装箱操作importjava.util.ArrayList;publicclassAutoBoxing{publicstaticvoidmain(String[]args){ArrayList<Integer>list=newArrayList<>(4);//装箱list.add(2022);list.add(82);System.out.println("list=>"+list);}}

输出:

list=>[2022,82]

在上述的示例中,我们创建了一个基于Integer类型的集合。因此,集合列表只能容纳Integer类型的对象。注意这一行:

list.add(2022);

这里,我们显然正在传递原始类型的值。然由于自动装箱,原始值被自动转换为整数对象并存储在数组列表中。

Java拆箱-包装类对象到原始类型

在拆箱中,Java编译器会自动将包装类对象转换为其相应的原始类型。示例:

//装箱Integerb=56;//拆箱inta=b;

和自动装箱一样,拆箱也可以用在Java集合中。

示例2:Java集合取值拆箱importJava.util.ArrayList;publicclassAutoBoxing{publicstaticvoidmain(String[]args){ArrayList<Integer>list=newArrayList<>(4);//装箱list.add(2022);list.add(82);System.out.println("list=>"+list);//拆箱intc=list.get(0);System.out.println("cval:"+c);}}

输出:

list=>[2022,82]cval:2022

在上面的例子中,请注意这一行:

intc=list.get(0);

在这里,get()方法返回索引为0的对象。然而,由于自动拆箱,该对象被自动转换为原始类型int并分配给变量c。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com