java 1.5中 装箱 取消装箱 加宽 是什么意思 ? 能解释一下么?

解决方案 »

  1.   

    boxing就是在基本类型和其wrapper类之间进行转换,jdk1.5提供auto-boxing,能够自动进行这种转换,不用编程者经过显式的编码完成。
      

  2.   

    加宽,根据Java Language Specification,基本类型的加宽有19种形式:byte to short, int, long, float, or double 
    short to int, long, float, or double 
    char to int, long, float, or double 
    int to long, float, or double 
    long to float or double 
    float to double参考:http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.1.2也就是说红色部分的类型可以赋值给后面的数据类型,好比:
    char c = 'a';
    double d = c;而引用类型的加宽是指,如果A是B的子类型,那么就可以把A赋给B,具体有以下几种情况。1,任何类型为S的类赋给任何类型为T的类,但S应是T的子类
    2,任何类型为S的类赋给任何类型为K的接口,但S应实现K
    3,null类型可以赋给任何类、接口或者是数组类型
    4,任何类型为J的接口赋给任何类型为K的接口,但J应是K的子接口
    5,任何接口类型都可以赋给Object
    6,任何数组类型赋给Object
    7,任何数组类型赋给Cloneable
    8,任何数组类型赋给java.io.Serializable
    9,任何数组类型SC[]赋给任何数组类型TC[],前提是SC和TC均是引用类型,且SC到TC可以进行放宽转换参考:http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#25215上面这些个是Java Language Specification第二版中的说明,在新的第三版(JDK5特性)中已经去除了。
    只是提及转换必须是子类型。
    参考:http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.1.5