隐式转换(Implicit):系统默认的、不需要加以声明就可以进行的转换。如 float转换为double类型。 显式转换(Explicit):利用强制类型转换运算符进行转换。如(int)a,a.ToString(),Convert.ToInt32(a)等等。
栈:存放值类型的内存
堆:存放引用类型的内存
装箱
装箱:跟据值类型的值,在堆上创建一个完整的引用类型对象,并返回对象的引用,是一种隐式转换。 装箱的意义:将值类型转化为引用类型(如object)来进行统一的操作(如作为函数的参数)与统一的存储(object[])。 装箱示例:
1 | int i=3; |
装箱本质:装箱的本质就是在堆上创建了引用类型的副本,新创建的引用类型和原来的值类型相互独立。
拆箱
拆箱:将装箱后的对象转换回值类型的过程,是一种显式转换。 如:
1 | int i=3; |
装箱与拆箱的应用举例
将各种类型的元素装箱为Object类型,然后创建一个Object数组一并包括之:
1 | Object[] array=new Object[3];//创建包括三个元素的Object数组array |