Java的装箱封箱

一.装箱封箱的概念
装箱:基本数据类型转换为对应的包装类类型。
拆箱:包装类类型转换为对应的基本数据类型。

基本数据类型与其对应的包装类:
byte/short/char/int/long/double/float/boolean
Byte/Short/Character/Integer/Long/Double/Float/Boolean

装箱过程实际上调用对应类.valueOf()方法实现
拆箱过程实际上调用的是对应类.intValue()方法实现

例:int装箱过程实际上调用Integer.valueOf()方法实现,Integer拆箱过程实际上调用的是Integer.intValue()方法实现

包装类的用途:
把基本类型变成对象类型,包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

装箱拆箱的使用举例:

public static void main(String[] args) {
    Integer i = 1; //自动装箱
    //等价于 Integer i = new Integer(1);
    int n = i;//自动拆箱
    //等价于 int n = 1;
}

拆箱装箱例题:
例1:

Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 300;
Integer i4 = 300;

System.out.println(i1 == i2);//true
System.out.println(i3 == i4);//false
System.out.println(i1.equals(i2));//true
System.out.println(i3.equals(i4));//false
//求输出结果

首先包装类中会存储一个High值和一个Low值,Java的包装类中有一个数组是由这两个值及其之间的所有数组成的一个缓存数组,这个数组称为缓冲区,只要在这两个值之间的数字需要被封箱到包装类时,直接返回缓存区中值就可以,而缓存数组中的值是只有一份的,所以指向缓存数组的值的引用之间也都是相同的。
Integer类中的High值是127,Low值是-128,也就是说在这两个值之间的所有数封箱时都是指向缓存数组的,故i1==i2为真;而i3,i4的值超出了这个范围,那么i3和i4就是指向通过new操作符创建的对象的引用,故不相同。
而Boolean类中的true和false这两种结果都是已经缓存好的。
例2:

Integer a = 1;
Integer b = 2;
Integer c = 3;
Integer d = 3;
Integer e = 321;
Integer f = 321;
Long g = 3l;
Long h = 2l;

System.out.println(c == d);//true
System.out.println(e == f);//false
System.out.println(c == (a+b));//true
System.out.println(c.equals(a+b));//true
System.out.println(g == (a+b));//true,因为Java中小类型会自动转化为大类型
System.out.println(g.equals(a+b));//false,因为类型上根本就不匹配,Long和Integer
System.out.println(g.equals(a+h));//true,小类型与大类型运算时发生了自动转换。

需要注意的是,在Java中包装类和基本类型一样也是具有小类型自动转换为大类型这个特性的,而且比较包装类的时候首先要注意是否是同一个包装类。

System.out.println(c == (a+b));//true
为何1和2的引用相加会变成3的引用?
解析:包装类做运算时会拆箱将其转变为基本类型去运算,然后在比较的时候再进行一次自动的装箱比较引用。而实际上最后比较的就是3和3的引用,3在Integer类的缓冲区中故为true。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java码头集装箱管理系统是一种基于Java语言开发的软件系统。该系统的主要目的是为了管理码头的集装箱物流,包括集装箱的进场、出场、堆存、移位、装卸等操作。 通过该系统,可以方便地记录并管理集装箱的相关信息,包括集装箱的型号、尺寸、重量、货物类型、进场时间、出场时间等。同时,还可以统计和查询集装箱的信息,以方便码头管理人员进行分析和决策。 该系统的功能主要包括以下几个方面: 1. 进场管理:支持集装箱的登记、验收和入库操作,包括对集装箱信息的录入和保存,以及对集装箱的重量、密封等进行检验和记录。 2. 出场管理:支持集装箱的出库操作,包括对集装箱信息的查询和检索,以及对集装箱的出场记录和确认。 3. 堆存管理:支持集装箱的堆存操作,包括对集装箱的堆场位置进行管理和调度,以及对集装箱的移位和装卸操作。 4. 统计分析:支持对集装箱的相关信息进行统计和分析,包括集装箱的数量、容积、重量等指标,以及集装箱的进出场情况和存储情况等。 5. 安全管理:支持对集装箱的密封、防盗等安全管理,包括对集装箱的封条和封志进行记录和审核。 通过该系统的应用,可以提高码头集装箱物流的管理效率和准确度,减少人为错误和数据丢失的风险,提升业务处理的速度和质量。同时,还可以提供实时的集装箱信息和报表,为相关部门和用户提供便利和支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值