每日一测4(装箱与拆箱)
1、定义
装箱:用于在垃圾回收堆中存储值类型。装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。
拆箱:从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。
2、为什么要装箱:
(1)调用一个类型为Object的参数的方法,Object可支持任意为型,当你需要将一个值类型(如Int32)传入时,需要装箱。
(2)一个非泛型的容器 ,同样是为了保证通用,而将元素类型定义为Object。同样的,要将值类型数据加入容器时,需要装箱。
3、操作:
(1)装箱:
对值类型在堆中分配一个对象实例,并将该值复制到新的对象中。按三步进行。
(1)新分配托管堆内存(大小为值类型实例大小加上一个方法表指针和一个SyncBlockIndex)。
(2)将值类型的实例字段拷贝到新分配的内存中。
(3)返回托管堆中新分配对象的地址(对象的引用)。
(2)拆箱:
检查对象实例,确保它是给定值类型的一个装箱值。将该值从实例复制到值类型变量中。
4、执行效率:
从原理上可以看出,装箱时,生成的是全新的引用对象,这会有时间损耗,也就是造成效率降低,
所以应尽快避免装箱操作。
转载于:https://www.cnblogs.com/jolins/p/4153599.html
每日一测4(装箱与拆箱)相关推荐
- 关于Visual C#装箱与拆箱的研究
关于Visual C#装箱与拆箱的研究 2004-09-15 作者: 出处: CSDN 在对这个问题展开讨论之前,我们不妨先来问这么几个问题,以系统的了解我们今天要探究的主题. 观者也许曾无数次的使 ...
- Java中的自动装箱和拆箱
自动装箱和拆箱 自动装箱和拆箱 自动装箱: 拆箱 1. 为什么要有包装类(或封装类) 2. 基本数据类型与对应的包装类: 3. 类型间的转换 4. 何时发生自动装箱和拆箱 赋值.数值运算时 方法调用时 ...
- C# tips ---值类型的装箱和拆箱
装箱过程,如: myStruct myobj= new myStruct(); object baseobj =myobj; 在上述隐式转换中,myobj的内容被复制到堆上,放在一个装箱的对象上,ba ...
- [Java开发之路](23)装箱与拆箱
1. 简单介绍 大家对基本数据类型都很熟悉.比如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性,比方基本类型不能调用方法.功能简单. ..,为了让基本 ...
- [CLR via C#]5.3 值类型的装箱和拆箱
原文:[CLR via C#]5.3 值类型的装箱和拆箱 在CLR中为了将一个值类型转换成一个引用类型,要使用一个名为装箱的机制. 下面总结了对值类型的一个实例进行装箱操作时内部发生的事: 1)在托管 ...
- C# 装箱和拆箱[整理]
1. 装箱和拆箱是一个抽象的概念 2. 装箱是将值类型转换为引用类型 :拆箱是将引用类型转换为值类型 利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链 ...
- 栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#]
一.栈和托管堆 通用类型系统(CTS)区分两种基本类型:值类型和引用类型.它们之间的根本区别在于它们在内存中的存储方式..NET使用两种不同的物理内存块来存储数据-栈和托管堆.如下图所示: 值 ...
- java可以用 lt =判断int吗_int 和 integer:装箱和拆箱的过程,会用到什么方法
本文转载自[微信公众号:五角钱的程序员,ID:xianglin965],经微信公众号授权转载,如需转载与原文作者联系 原文标题<int 和 integer :装箱和拆箱的过程,会用到什么方法,你 ...
- 装箱与拆箱及其性能损失问题
首先我想了解一下什么是装箱和拆箱 在类型系统中,任何值类型和引用类型都可以和object类型进行转化,装箱转化 是指将一个值类型显式或者隐式的转化为一个object类型,或者是转化成一个被该值类型应用 ...
- Integer装箱和拆箱 以及扔玻璃球的题目
Integer装箱和拆箱,很奇怪的,因此Integer比较不要使用==! package interview; public class IntegerTest { public static voi ...
最新文章
- 老牛:虚拟化让工作如此智慧
- 判断当前一个物料被其他人锁定
- 北斗导航 | Matlab实现GNSS接收机经纬度数据(NMEA语句)实时获取和地图绘制(Matlab源代码)
- python flask 大文件 下载_python flask 建站之文件上传下载(一)
- C# 结合 Golang 开发
- c# 保存和打开文件的方法
- java 度量_Java度量方法调用率
- 图标X轴this显示值自定义
- python人脸识别要怎么实现_详解如何用OpenCV + Python 实现人脸识别
- projecteuler_problem12
- 2020年考研准考证打印下载及注意事项
- 密码编码学与网络安全学习笔记
- 接口测试工具postman
- [exgcd] Jzoj P5855 吃蛋糕
- oracle数据库的使用
- Android沉浸式的两种方法
- kafka错误代码解释
- jsapi 支付缺少appid ¬ify_url
- mysql数据库全局搜索_数据库全局搜索
- java.awt包_Java中awt包
热门文章
- WinForm控件之【LinkLabel】
- 日志汇总:logging、logger
- 基于Docker方式实现Elasticsearch集群
- 配置Maven环境变量-Eclipse/Idea添加Maven
- docker容器配置加速器
- Android 向右滑返回,退出当前activity
- SQLSERVER EXCEPT运算符=ORACLE MINUS
- Visual Studio 2008 安装失败(“Web 创作组件”无法安装)解决方法
- MS SQLSERVER中如何快速获取表的记录总数
- java中字节流的选择,求助,java中怎么用字节流读写汉字