java和c#中的装箱和拆箱操作

c#装箱和拆箱

装箱:整体上来说,装箱是将值类型转换成引用类型,比如将Vector3转换成Object类型。

具体而言:

1)在托管堆中为值类型分配内存。除了原始的数值以外还应该有指向该数值的引用。

2)值类型数据复制到引用类型的堆内存中。

3)再返回对象的引用。

拆箱;一般来说,拆箱是将引用类型转换成值类型,比如将Object类型转换成Vector3类型。

具体而言:

1)首先在托管堆上获取到引用类型的引用。

2)将引用的值类型对象复制到线程栈上。

 

java装箱和拆箱

装箱:基本数据类型转换为包装器类型,比如将int类型转换为Interger类型。

拆箱:包装器类型转化为基本数据类型,比如将Interger类型转换为int类型。

上图上左边是基本数据类型,右边是包装器类型。

装箱是通过调用包装器中的ValueOf()方法,而拆箱是通过调用包装器中的IntValue()方法。

需要强调一点的是:如果在[-128,127]之间,创建的Integer类型指向同一个对象,其值是相同的,而如果超出了这个范围,即使对相同的类型赋予相同的值,其中依旧不同,因为引用不同。

 

 

我只想开心充实过好今天,明天以后爱咋咋,爱谁谁!

 

转载于:https://www.cnblogs.com/Optimism/p/10432067.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值