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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 伍淑江 中级黑马   /  2013-3-17 12:11  /  1832 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 伍淑江 于 2013-3-17 14:19 编辑

拆箱和装箱是什么意思呀?

为了调用toString()、hashCode()、getClass()、equals()等等这些方法而将基本数据类型包装成引用数据类型,
这样就可以创建对象来调用这些方法,可以这样理解吗?

那拆箱又有什么作用呢?

点评

如果问题未解决,请继续追问回复者,如果问题解决了,请将分类改为已解决,谢谢  发表于 2013-3-17 13:56

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 ♂超√/kun 于 2013-3-17 12:32 编辑

将生成的class发送给其他人,其他人只要将该文件设置到classpath路径下,就可以使用该工具类
因为你写的代码不一定是你在用  别人也可能用
所以 需要进行一些动作
比如你的"箱子"操作

评分

参与人数 1黑马币 +9 收起 理由
黄玉昆 + 9

查看全部评分

回复 使用道具 举报
我的理解。拆箱,覆写某些方法。。
装箱。封装函数。{:soso_e113:}
回复 使用道具 举报
所谓装箱,就是把基本类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double,等等。
所谓拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。
(1)//手动方式进行装箱和拆箱的操作
int i=10;
Integer j=new Integer(i); //手动装箱操作
int i1=j.int();//手动拆箱操作
(2)自动进行的装箱和拆箱的操作
int i=10
Integer j=i;
int k=j;

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
举个例子: Integer x = new Integer(4);
可以改写为:Integer x = 4;//自动装箱,相当于new Integer(4);
                   x = x+2; //x进行自动拆箱,变成int型,和2进行加法运算,再将和进行装箱赋给x。拆箱原理:x.intValue();

例:Integer m = 128;
      Integer n = 128;
      System.out.println("m和n相等吗? "+(m==n)); //false

      Integer a = 127;
      Integer b = 127;
      System.out.println("a和b相等吗? "+(a==b)); //true
原因:因为a和b指向同一个Integer对象,当数值在byte范围内,对应JDK1.5后的新特性,如果该数值已经存在,则不再开辟新空间。
基本数据类型对象包装类:
byte         Byte
short        Short
int            Integer
boolean    Boolean
float         Float
double      Double
char         Character
基本数据类型对象包装类的最常见作用:就是用于基本数据类型和字符串类型之间做转换。

      

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
1.  装箱(自动将基本数据类型封装成对象)
Integer integer = 100;等效于Integer integer = Integer.valueOf(100);
valueOf方法内部,将-128127之间对应的Integer对象存到一个缓冲区中(数组中)。在自动装箱时,如果valueOf方法的参数在-128127之间,就直接返回数组中的那个对象,而不会创建新的Integer对象。这样就避免的不必须的资源损耗。
2.       拆箱(自动将对象转成基本数据类型)。如:int x = new Integer(100);
3.       享元模式(flyweight):如果很多很小的对象有很多相同的东西,可以把它们变成一个对象,不同的东西作为外部的属性,作为方法的参数传入。
自动拆箱示例:
public static void main(String[] args) {
    Integer a = new Integer(100);
    Integer b = 100;
    int c = 100;
    /*
     * int类型的数和Integer类型的对象相比较时,
     * 会将Integer类型的对象拆箱成int类型。
     * 所以a==c,b==c。这样不同类型的变量可以相比较。
     */
    System.out.println(a==b);//false
    System.out.println(a==c);//true
    System.out.println(b==c);//true
}
运行结果:
false
true
true

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马