A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏振龙 中级黑马   /  2012-7-8 10:22  /  1711 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int是值类型,而 class是引用类型,那么int如何从Object派生的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
是这样的,当int用作int时候,这是一个值类型(在栈上),然而,当它用作是Object时,这是一个引用堆上的整数值的引用类型。换而言之,当你将int看作对象时,运行层将它自动转化为对象引用,这个转化过程称作装箱(boxing)。这个转换包括将栈里的值拷贝到了堆里,并且新建了一个对象的实例来引用该值。拆箱操作(unboxing)是个反过程——将对象转化为基于栈的值类型。
int x = 3;   
// 堆栈上新的int类型,值为3
object objx = x;   
// 堆上新的int, 设定值为3,x=3仍然在堆栈上
int y = (int)objx;   
//新的int类型的值3在堆栈上,x=3在堆栈上,objx=3在堆上

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
int是隐式派生自System.ValueType的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
Object 数据类型保存引用对象的 32 位(4 字节)地址,Object 的默认值为 Nothing(空引用)。
可以为 Object 的变量分配任何引用类型(字符串、数组、类或接口)。
Object 变量还可以引用任何值类型(数值、Boolean、Char、Date、结构或枚举)的数据。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马