我像定义int变量一样用Integer定义一个数:int a = 123;
Integer b = 123;编译通过,在使用过程中,凡是可以用到变量a的地方,变量b也可以使用。于是我便困惑了,两者本身不是一个类型的,一个是基本数据类型,一个是类对象,但是却可以这样使用。谁能说一下Integer b = 123 这个赋值的大概原理或者步骤,小弟实在是分不清这种用法相当于什么

解决方案 »

  1.   

    这是JDK1.5引入的box和unbox特性,如果用1.4的编译器就编译不过。实质上编译器做了一些额外的事情,用Jad反编译一下就能发现了。
    CSDN上曾有一篇文章,推荐一看http://blog.csdn.net/jerryao/archive/2006/07/03/870159.aspx
      

  2.   

    自动装箱和拆箱。
    在用Integer类型的时候 如果你传入a 
    a就会被自动装箱成Integer类型
    在用int类型的时候 你传入b
    b就会被自动拆箱成int类型
      

  3.   

    好多时候,特别是从session,request等得到结果时,尽可能用
    Integer, 因为 null的Integer是无法转化为int的啦。
    比如
    Integer id = (Integer)session.getAttribute("ID");
    if(id==null){
     ..
    }这样更安全
      

  4.   

    Integer  就是包装类,包装类还有Float、Double、 String等,Integer最常用的是将一个字符或字符串转换成数字,比如
    String str = "123";
    int num = Integer.parseInt(str);这样,num就等于123,可以用来进行数学运算等等