Java 入门:装箱与拆箱

引言

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

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

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

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

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

示例:
 

int a = 10;
// 装箱操作
Integer b = a;

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

示例 1: 使用 Java 集合时的装箱操作
 

import java.util.ArrayList;

public class AutoBoxing {
    public static void main(String[] args) {

        ArrayList<Integer> list = new ArrayList<>(4);

        // 装箱
        list.add(2022);
        list.add(82);

        System.out.println("list=> " + list);
    }
}

输出:
 

list=> [2022, 82]

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

注意这一行:
 

list.add(2022);

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

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

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

示例:
 

// 装箱
Integer b = 56;

// 拆箱
int a = b;

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

示例 2:Java 集合取值拆箱
 

import java.util.ArrayList;

public class AutoBoxing {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>(4);
        // 装箱
        list.add(2022);
        list.add(82);
        System.out.println("list=> " + list);
        // 拆箱
        int c = list.get(0);
        System.out.println("c val: " + c);
    }
}

输出:
 

list=> [2022, 82]
c val: 2022

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

int c = list.get(0);

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值