不知道这么提问是否妥当,我的问题是这样的:
java为原始数据类型提供了风专类,这样就有如下代为int变量可以指向一个Integer类型的对象,但是为什么int型数组 不可以只想一个Integer型的数组呢?如第4行,是不是java也把数组封装成了一个对象呢? 还有如果我想实现int[] f = new Integer[]{1};这样的形式有没有可能呢?
int c = new Integer(2);
long d = new Long(2L);
double e = new Double(2.0);int[] f = new Integer[]{1};

解决方案 »

  1.   

    int 和 Integer 等基本类型 和封装类之间有 自动装箱和自动解箱机制.能相互转化.
    而int[] 定义的引用指向一个数组对象,该对象的元素是int类型
    Integer[] 定义的引用指向的是另一个数组对象,元素为Integer类型
    也就是你说的数组也是对象,int[]与Integer[]不一样
    int[] f = new Integer[]{1} 不可能对吧.我没有试成功.求高人指点吧
      

  2.   

    Java不是纯粹的面向对象的编程语言。
    基础类型就不是类。它们对应的封装类,才是类。
    我想,数据类型 要和 类 的概念做一下区分。楼主将 基础类型 单纯的 与 封装类型 混合使用,
    之所以能够成功,是因为,楼主使用的是JDK5以后版本的编译器,
    在这之前的编译器,是不支持基础类型与封装类自动转换的。
    这也就是楼上所说的 自动装箱和自动解箱机制。后面的数组就不可以了,因为,数组本身,就是一种 数据类型,
    编译器只做到了,判断你使用的是什么数据类型,
    比如你使用的是 基础类型的数据,还是类对象,还是数组对象。
    封装类对象可以与基础类型自动转换,但是,
    两个不同类型的数组对象(int[]与Integer[]两者是不同类型的数据),是无法转换的。楼主的意思是将数组的内容自动转换,而编译器没实现内容的自动转换。
      

  3.   

    autoboxing实际上后面还是由编译器为你干了好多事情,记得可能会有一些语法糖在里面,回去看看书吧