- 浏览: 7936814 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
看了CODEPROJECT上篇讲BOXING的文章,觉得不错,故翻译并修改理顺之,对beginner(比如本人)是个不错的选择
首先,C#(JAVA也是),将类型分为值类型(value type)和引用类型(reference type).
VALUE TYPE
值类型的数据放在堆栈中的,用来存放固定长度的数据,如INT。每个程序在运行时都有自己的堆栈,其他程序不能访问。所有的value type都是继承自system.valuetype.常见的如简单类型的数(INT,DOUBLE。。)和复合类型(枚举,结构)。
引用类型:
引用类型的数放在堆(HEAP)里,存放可变长度的数据,没有预先指定大小,,如数组,接口,委托,类等,都属于引用类型。
下面举例子说明:
比如, System.ValueType r = 5;,这样的写法是成立的,自动匹配认为r的类型是int32,
如果用Console.WriteLine(r.GetType()) ;,可以清楚看到R的类型;
什么是BOXING(装箱)呢?
boxing,就是将值类型转变为引用类型的过程,比如
Int32 x = 10;
object o = x ; //隐式转换
Console.WriteLine("The Object o = {0}",o); //输出10
//-----------------------------------------------------------
Int32 x = 10;
object o = (object) x; // 显式转换
Console.WriteLine("The object o = {0}",o); // prints out 10
上面的例子可以看到,一个int32类型的值10,通过object o=x;进行隐式的BOXING,转变为引用类型,而通过object o=(object)x,这样进行的是显式转换,结果一样。注意,隐式转换是编译器自动进行的。
什么是UNBOXING(拆箱)呢?
比如:
Int32 x = 5;
object o = x; // 隐式BOXING
x = o; // 隐式UNBOXING
就是将引用类型转换为值类型。
当然,上面也可以这样写,用显式unboxing:
Int32 x = 5;
object o = x;
x = (Int32)o;
要特别注意的是,在unboxing中,如果象下面那样
Int32 x = 5;
Int64 y = 0;
object o = x;
y = (Int64)o;
Console.WriteLine("y={0}",y);
这样编译起来,会出现System.InvalidCastException异常,因为x的值在boxing为32位值后,必须unboxing为32位.当然,可以在unboxing为32位后,再强制转换为64位,如
y = (Int64)(Int32)o;
还要特别注意的是,在unboxing时,要确保得到的值变量有足够的空间存储所有的字节,比如
long a=123323456;
object c=(object)a;
int d=(int)c;
会出现错误,因为64位的值A先BOXING为引用类型,存储在堆上,再unboxing为32位值int,则因为D没空间存储值而出错
首先,C#(JAVA也是),将类型分为值类型(value type)和引用类型(reference type).
VALUE TYPE
值类型的数据放在堆栈中的,用来存放固定长度的数据,如INT。每个程序在运行时都有自己的堆栈,其他程序不能访问。所有的value type都是继承自system.valuetype.常见的如简单类型的数(INT,DOUBLE。。)和复合类型(枚举,结构)。
引用类型:
引用类型的数放在堆(HEAP)里,存放可变长度的数据,没有预先指定大小,,如数组,接口,委托,类等,都属于引用类型。
下面举例子说明:
比如, System.ValueType r = 5;,这样的写法是成立的,自动匹配认为r的类型是int32,
如果用Console.WriteLine(r.GetType()) ;,可以清楚看到R的类型;
什么是BOXING(装箱)呢?
boxing,就是将值类型转变为引用类型的过程,比如
Int32 x = 10;
object o = x ; //隐式转换
Console.WriteLine("The Object o = {0}",o); //输出10
//-----------------------------------------------------------
Int32 x = 10;
object o = (object) x; // 显式转换
Console.WriteLine("The object o = {0}",o); // prints out 10
上面的例子可以看到,一个int32类型的值10,通过object o=x;进行隐式的BOXING,转变为引用类型,而通过object o=(object)x,这样进行的是显式转换,结果一样。注意,隐式转换是编译器自动进行的。
什么是UNBOXING(拆箱)呢?
比如:
Int32 x = 5;
object o = x; // 隐式BOXING
x = o; // 隐式UNBOXING
就是将引用类型转换为值类型。
当然,上面也可以这样写,用显式unboxing:
Int32 x = 5;
object o = x;
x = (Int32)o;
要特别注意的是,在unboxing中,如果象下面那样
Int32 x = 5;
Int64 y = 0;
object o = x;
y = (Int64)o;
Console.WriteLine("y={0}",y);
这样编译起来,会出现System.InvalidCastException异常,因为x的值在boxing为32位值后,必须unboxing为32位.当然,可以在unboxing为32位后,再强制转换为64位,如
y = (Int64)(Int32)o;
还要特别注意的是,在unboxing时,要确保得到的值变量有足够的空间存储所有的字节,比如
long a=123323456;
object c=(object)a;
int d=(int)c;
会出现错误,因为64位的值A先BOXING为引用类型,存储在堆上,再unboxing为32位值int,则因为D没空间存储值而出错
发表评论
-
很高兴能入住博客园
2005-01-15 19:24 1620很高兴申请能被批准,十分高兴。因为我主要搞WEB编程的 ... -
一些我翻译或原作的文章
2005-01-15 19:50 1335平时有空的话,比较喜欢看外国的.net站点,因此也翻译些好 ... -
asp.net 中对datagrid中的BUTTON应用CSS样式
2005-01-15 20:02 2486在asp.net中,如果要对某个按钮,TEXTBOX应用样式, ... -
asp.net 2.0中的ValidationGroup
2005-01-15 20:04 1537在asp.net 1.1中,对于验证类控件,在使用时,遇到有的 ... -
asp.net 2.0中的弹出对话框
2005-01-15 20:05 1346在asp.net 1.1中,要做1个弹出的对话框的话,一般是在 ... -
asp.net 2.0中设定默认焦点按钮
2005-01-15 20:05 1578在asp.net 1.1中,当要在page_load页面中,设 ... -
asp.net 2.0中使用sitemapDATAsource做页面导航
2005-01-15 20:07 1716在ASP.NET 2.0中,没有专门的页面导航控件,但可以使用 ... -
asp.net 2.0中TREEVIEW中动态增加结点
2005-01-15 20:08 2040在asp.net 2.0中,要动态从数据库中取出内容,动态增加 ... -
一个.net实现的ubb类
2005-01-15 20:09 1502using System; using System.Text ... -
ASP.NET 2.0中改变passwordrecovery发邮件时的信息
2005-01-15 20:11 1388在ASP.NET 2.0的登陆控件中(详细见我的文章,www. ... -
asp.net 2.0中的Cross PAGE REQUEST
2005-01-15 20:12 1324大家还记得吧,在ASP中,一个页面里,只要有一个Form表单, ... -
asp.net 2.0中一次性更新所有GRIDVIEW的记录 (翻译)
2005-01-15 20:13 1335在asp.net 2.0中,gridview控件是十分不错的控 ... -
ASP.NET 2.0中GRIDVIEW排序
2005-01-15 20:15 1964虽然是BETA 1的,但原理其实和。NET 1。1的差不多,下 ... -
即将有很多介绍WEBSERVICE互相整合的录象
2005-01-15 23:07 1213如何做到JAVA和。NET之间相互使用WEBSERVICE呢? ... -
asp.net 2.0的又一新特性
2005-01-16 20:49 1150ASP.NET 2.0真是多新特性呀,今天看资料才发现的。比如 ... -
上周听SMARTCLIENT讲座感受
2005-01-20 13:01 1381上周,在广州的SMARTCLIENT讲座上,终于见到了开心 ... -
基于WEBSEVRICE的课件搜索系统(一)
2005-01-28 22:47 1406临到年尾了,手上 ... -
基于WEBSERVICE的课件搜索系统(二)
2005-01-28 22:50 12444.3.2 WebService代理中 ... -
基于WEBSERVICE的课件系统(三)
2005-01-28 22:58 1669在前面的<<基于WEBSERVICE的课件系统(1 ... -
基于WEBSERVICE的课件系统(四,后记)
2005-01-28 23:06 1160由于是直接从WORD上COPY到BLOG的,所以难免在排版 ...
相关推荐
1. 自动装箱: 2. 自动拆箱: 3. 缓存问题
在JavaScript中,装箱(boxing)和拆箱(unboxing)是两个重要的概念,它们涉及到基本数据类型和引用数据类型之间的转换。基本数据类型包括Number、String、Boolean、null、undefined,而引用数据类型主要是Object,...
装箱/拆箱与封装:Java 的Map<Something> 问题:我想要一个将整数存储为其值的映射。 现在我有两种方法: 使用任何东西作为键和Integer (非原始整数)作为值,或使用任何东西作为键和一个包含int (原始整数)作为...
Implement code that uses boxing/unboxing Use equality/identity, properties, enums, strings, arrays, and more Who This Book Is For Experienced Microsoft .NET application developers, familiar with ...
Implement code that uses boxing/unboxing Use equality/identity, properties, enums, strings, arrays, and more Who This Book Is For Experienced Microsoft .NET application developers, familiar with ...
37章继续深入装箱与拆箱,通过BoxingAndUnboxing(2).swf文件可能提供了更多示例和实践案例,帮助开发者避免常见的陷阱和误区,比如不正确的类型转换可能导致的NullReferenceException。 38章转向了范型(Generic)...
Chapter 8Primitives as Typesexplores the relationship between the primitive types and objects of their corresponding wrapper classes, and how boxing and unboxing can transparently convert between ...
- `36-boxing&unboxing(1).swf`和`37-boxing&unboxing(2).swf`详细阐述了C#中的装箱和拆箱操作。装箱是将值类型转换为对象的过程,而拆箱则是相反的过程。装箱用于将值类型存储在对象堆上,以便可以存储在引用类型...
【Android-boxing】是一个专为Android平台设计的多媒体选择器库,它采用了现代软件开发中的Model-View-Presenter(MVP)模式,旨在提供一种高效、灵活的方式来处理用户在应用程序中选择图片和视频的需求。...
《Unity3D游戏开发:Boxing Game Starter Kit详解》 Unity3D作为一款强大的跨平台游戏引擎,被广泛应用于各种游戏类型的开发,其中包括了动作、竞技等类型。本篇文章将详细解析“Boxing Game Starter Kit”这个拳击...
Minimize garbage collection, boxing, and unboxing (see Items 16 and 45) Take full advantage of interfaces and delegates (see Items 22 though 25) Make the most of the parallel framework (see Items 35...
压缩的核心代码仅仅50k,包括了javascript类型检查,强制类型,精密且灵活的事件模型,自定义事件,observer和tie/untie,boxing/unBoxing/reBoxing模型,直接调用,dom生成,查询,遍历和操作,css样式操作,css类...
html5小游戏【3d boxing拳击游戏】源代码免费分享html5小游戏【3d boxing拳击游戏】源代码免费分享html5小游戏【3d boxing拳击游戏】源代码免费分享html5小游戏【3d boxing拳击游戏】源代码免费分享html5小游戏【3d ...
boxing 是 Bilibili 开源的基于 MVP 模式的 Android 多媒体选择器。特性支持多/单图片选择和预览,单图裁剪功能支持gif支持视频选择功能提供图片压缩支持自定义UI预览图 标签:boxing
Boxing.zip是一个包含基于51单片机姿态检测程序的压缩包,主要涉及IIC通信协议来读取MPU6050六轴陀螺仪/加速度计的数据,并通过串口将这些数据输出。这个项目的核心是实现对物体或设备姿态的实时监测,对于机器人...