黑马程序员技术交流社区

标题: 关于装箱和拆箱 [打印本页]

作者: 王朋    时间: 2013-5-19 19:00
标题: 关于装箱和拆箱
关于装箱和拆箱,学习了装箱和拆箱,只知道他是值类型和引用类型的转换,但是具体什么情况想会用到啊?
作者: 回首、后_街    时间: 2013-5-19 19:37
比如说声明一个int类型的数据:
int i=2;你此时想把int转换成String类型
但是int又没有什么方法可以用!这时你就可以把i封装成一个int对应的包装类,也就是装箱new Integer(i).toString()就可以把它转换成String类型了,当然你可以用i+""也可以搞定,没必要那么麻烦!
但是你装箱之后,这个类提供了大量的方法供你使用,比如获取int值对应的二进制是什么??等等很多,这就是装箱的好处!
还有拆箱比如说:
        String s="2";
        int i=new Integer(s);
这个是拆箱,比如你要用s和数值类型判断时你是不是需要拆箱,要不你没法比较,只有转换过后才可以比较if(i>10)

当然这只是举些小例子,你随着学习的深入可以慢慢体会的到,到时候你慢慢感受一下他们的应用场合
作者: wang346351    时间: 2013-5-22 13:40
装箱和拆箱确实值类型和引用类型的转换
但实质是堆和栈之间发生了关系  一般尽量不要在项目中发生装箱拆箱
不是什么时候要用到的问题
作者: 李云飞    时间: 2013-5-29 00:04

装箱: 将值类型转换为引用类型的过程
拆箱:将引用类型转换为值类型的过程


int n=10;
object o=n;//装箱
int m=(int)o;//拆箱
Console.WriteLine(m);

//由于Int32是结构,结构是值类型
由于Int32还是实现了Icomparable接口,接口是引用类型
Int32到Icomparable 发生了装箱,Icomparable到Int32发生了拆箱//
int n1=10;
Icomparable com=n1;//装箱
int m=(int)com;//拆箱

string s1="a";
string s2="b";
int s3=10;
double s4=1.0;
string.Concat(s1,s2,s3,s4); //Concat里面参数是object ,object是引用类型,string是引用类型,int,double 是值类型,所以发生两次装箱。

重载就是方法重名,但是参数个数和参数类型不同
作者: zpzhangwenhan    时间: 2013-5-29 21:05
什么是装箱(boxing) (boxing) (boxing)和拆箱(unboxing) (unboxing) (unboxing)?
装箱:从值类型接口转换到引用类型。
拆箱:从引用类型转换到值类型。
     object obj=null;      //引用类型
     obj=1;                  //装箱,boxing。把值类型包装为引用类型。
     int i1=(int)obj;       //拆箱。unboxing




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2