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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王朋 中级黑马   /  2013-5-19 19:00  /  2140 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于装箱和拆箱,学习了装箱和拆箱,只知道他是值类型和引用类型的转换,但是具体什么情况想会用到啊?

4 个回复

倒序浏览
比如说声明一个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)

当然这只是举些小例子,你随着学习的深入可以慢慢体会的到,到时候你慢慢感受一下他们的应用场合
回复 使用道具 举报
装箱和拆箱确实值类型和引用类型的转换
但实质是堆和栈之间发生了关系  一般尽量不要在项目中发生装箱拆箱
不是什么时候要用到的问题
回复 使用道具 举报

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


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 是值类型,所以发生两次装箱。

重载就是方法重名,但是参数个数和参数类型不同
回复 使用道具 举报
什么是装箱(boxing) (boxing) (boxing)和拆箱(unboxing) (unboxing) (unboxing)?
装箱:从值类型接口转换到引用类型。
拆箱:从引用类型转换到值类型。
     object obj=null;      //引用类型
     obj=1;                  //装箱,boxing。把值类型包装为引用类型。
     int i1=(int)obj;       //拆箱。unboxing
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马