- 浏览: 7859411 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 1584很高兴申请能被批准,十分高兴。因为我主要搞WEB编程的 ... -
一些我翻译或原作的文章
2005-01-15 19:50 1291平时有空的话,比较喜欢看外国的.net站点,因此也翻译些好 ... -
asp.net 中对datagrid中的BUTTON应用CSS样式
2005-01-15 20:02 2447在asp.net中,如果要对某个按钮,TEXTBOX应用样式, ... -
asp.net 2.0中的ValidationGroup
2005-01-15 20:04 1500在asp.net 1.1中,对于验证类控件,在使用时,遇到有的 ... -
asp.net 2.0中的弹出对话框
2005-01-15 20:05 1315在asp.net 1.1中,要做1个弹出的对话框的话,一般是在 ... -
asp.net 2.0中设定默认焦点按钮
2005-01-15 20:05 1543在asp.net 1.1中,当要在page_load页面中,设 ... -
asp.net 2.0中使用sitemapDATAsource做页面导航
2005-01-15 20:07 1672在ASP.NET 2.0中,没有专门的页面导航控件,但可以使用 ... -
asp.net 2.0中TREEVIEW中动态增加结点
2005-01-15 20:08 1990在asp.net 2.0中,要动态从数据库中取出内容,动态增加 ... -
一个.net实现的ubb类
2005-01-15 20:09 1468using System; using System.Text ... -
ASP.NET 2.0中改变passwordrecovery发邮件时的信息
2005-01-15 20:11 1338在ASP.NET 2.0的登陆控件中(详细见我的文章,www. ... -
asp.net 2.0中的Cross PAGE REQUEST
2005-01-15 20:12 1288大家还记得吧,在ASP中,一个页面里,只要有一个Form表单, ... -
asp.net 2.0中一次性更新所有GRIDVIEW的记录 (翻译)
2005-01-15 20:13 1300在asp.net 2.0中,gridview控件是十分不错的控 ... -
ASP.NET 2.0中GRIDVIEW排序
2005-01-15 20:15 1929虽然是BETA 1的,但原理其实和。NET 1。1的差不多,下 ... -
即将有很多介绍WEBSERVICE互相整合的录象
2005-01-15 23:07 1175如何做到JAVA和。NET之间相互使用WEBSERVICE呢? ... -
asp.net 2.0的又一新特性
2005-01-16 20:49 1112ASP.NET 2.0真是多新特性呀,今天看资料才发现的。比如 ... -
上周听SMARTCLIENT讲座感受
2005-01-20 13:01 1347上周,在广州的SMARTCLIENT讲座上,终于见到了开心 ... -
基于WEBSEVRICE的课件搜索系统(一)
2005-01-28 22:47 1353临到年尾了,手上 ... -
基于WEBSERVICE的课件搜索系统(二)
2005-01-28 22:50 12064.3.2 WebService代理中 ... -
基于WEBSERVICE的课件系统(三)
2005-01-28 22:58 1632在前面的<<基于WEBSERVICE的课件系统(1 ... -
基于WEBSERVICE的课件系统(四,后记)
2005-01-28 23:06 1129由于是直接从WORD上COPY到BLOG的,所以难免在排版 ...
相关推荐
主要介绍了JavaScript装箱及拆箱boxing及unBoxing用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1. 自动装箱: 2. 自动拆箱: 3. 缓存问题
装箱/拆箱与封装: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 .NET ...
35-Type.swf 36-boxing&unboxing(1).swf 37-boxing&unboxing(2).swf 38-Generic.swf
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 ...
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...
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 ...
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类...
boxing:基于MVP模式的Android多媒体选择器
boxing 是 Bilibili 开源的基于 MVP 模式的 Android 多媒体选择器。特性支持多/单图片选择和预览,单图裁剪功能支持gif支持视频选择功能提供图片压缩支持自定义UI预览图 标签:boxing
4.3 Boxing and unboxing 86 4.3.1 Boxing conversions 86 4.3.2 Unboxing conversions 87 4.4 Constructed types 88 4.4.1 Type arguments 89 4.4.2 Open and closed types 89 4.4.3 Bound and unbound types 89 ...
4 自动实现装箱和解箱操作(Boxing/Unboxing Conversions) 5 静态导入(Static Imports) 6 枚举类(Enumeration Classes) 7 元数据(Meta data) 8 Building Strings(StringBuilder类) 9 控制台输入(Console Input) 10 ...
unity3d 游戏源码 Boxing Game Starter Kit 拳击项目包 资源.zip
Examine the structure of PHP types including boxing, regex, namespace functions, composer autoload, null problem, optional values, and more Work with extensions like vagrant + phansible, provisioning,...
Boxing and Unboxing 141 Comparing Objects for Equality 142 Comparing Reference Types for Equality 142 The ReferenceEquals() Method 142 The virtual Equals() Method 143 The static Equals() Method 143 ...
bleu的几种soomthing介绍. 资源来自 Boxing Chen and Colin Cherry National Research Council Canada