装箱拆箱

Posted sunmarvell

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装箱拆箱相关的知识,希望对你有一定的参考价值。

装箱拆箱

放入object和取出过程

 

装箱:根据值类型的值,在堆上创建一个完整的引用类型对象,并返回对象的引用,是一种隐式转换

就是将值类型转换为引用类型

有时候需要将值类型转化为引用类型来进行统一的操作和统一的存储

装箱示例:

int i=3//这个是int类型的值类型,值为3
object oi=null;
oi=i;

装箱的本质就是在堆上创建了引用类型的副本,新创建的引用类型和原来的值类型相互独立。

 

 

拆箱:将装箱后的对象转换回值类型的过程,是一种显示转换,需要手动完成

int j=(int)oi

自定义转换

为自己的结构或者类定义显式或隐式转换,为了让结构或者类可以变成一个预期相关的类型,并且使这种转换更加简单。

public static explicit(显式)/ implicit(隐式) operator 没有函数名称

显式需要用到括号强制转换。

pubilc static--静态方法 implicit--隐式 operator--转换

pubilc static--静态方法 explicit--显式 operator--转换

隐式转换:

public static implicit operator Dog(Cat cat)

{
}

技术图片

 

 

显式转换:

隐式转换和显式转换的调用不同

技术图片

以上是关于装箱拆箱的主要内容,如果未能解决你的问题,请参考以下文章

消息机制的优化----------无需进行装箱/拆箱的 版本

装箱与拆箱

java拆箱和装箱

java 自动装箱拆箱

java 自动装箱和拆箱

装箱和拆箱