黑马程序员技术交流社区
标题:
值类型的一个问题
[打印本页]
作者:
HM朱百青
时间:
2013-4-23 01:16
标题:
值类型的一个问题
既然 int是值类型,而 class是引用类型,那么int是怎样从Object派生的呢?
作者:
王赟
时间:
2013-4-23 03:04
是这样的,当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在堆上
复制代码
作者:
覃庆健
时间:
2013-4-23 04:48
个人理解(如果有误希望大家回复指点下):
int(值类型)转换为Object(引用类型), 其实就是创建了一个对象Object的实例所指向的int实例的地址(引用)~
若是值类型的实例,且表现的是实际数据,则存储在栈上;如果是引用类型的实例,那就存储在堆上
作者:
赵威
时间:
2013-4-23 08:55
如果有说的不对的,希望大神能够指点,感激不尽:
1>int到object相当于是装箱(boxing);而如果是从object到int则是相当于拆箱(unboxing)
2>用什么类型装箱的,就得用同一种类型去拆箱,否则拆箱不成功
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2