黑马程序员技术交流社区

标题: 基本类型的数组能否转换成其对应包装类的数组? [打印本页]

作者: 罗全涛    时间: 2012-1-2 17:08
标题: 基本类型的数组能否转换成其对应包装类的数组?
本帖最后由 罗全涛 于 2012-1-2 20:45 编辑

我们知道 Integer i = 3;编译时不会报错,是因为java提供了基本数据类型的自动装箱和拆箱功能。
那么 int[] a1= new int[3] ;当我做如下操作时报错:Integer[]   i =a1;
提示:不能将int[]数组转换成Integer[]类型,
不知道其中的缘由,大家帮忙看看吧?
integer和int直接赋值可以,问题是他们对应的数组赋值是发生错误,重点在数组????
作者: 孙海亮    时间: 2012-1-2 17:37
int 是基本数据类型,而Integer是引用数据类型。两者是不一样的!不能混为一谈!
作者: 林晓波    时间: 2012-1-2 17:52
本帖最后由 林晓波 于 2012-1-2 18:00 编辑

int 是基本类型,直接存数值
integer是对象,用一个引用指向这个对象
他们是两种不同的数据类型
java1.5以上版本,int和Integer之间的转换是由JVM自己实现的,不需要手工转换,因此int数组和Integer数组虽然不能直接转换,但是在使用时没什么区别的。 如果非要转的话,那只能循环将int数组中的内容设置到Integer中吧,但这对于java1.5以上就没什么意义了
作者: 罗全涛    时间: 2012-1-2 17:56
integer和int直接赋值可以,问题是他们对应的数组赋值是发生错误,重点在数组????
作者: 刘小峰    时间: 2012-1-2 18:30
这个我们可以这么做——用for循环把int型数组中的元素挨个设到Integer中,下面是具体实现的代码:

public class Test {

        public static void main(String[] args) {

                int[] arr = { 1, 2, 3, 4, 5, 6, 7 };

                Integer[] iarr = new Integer[arr.length];
               
                for (int i = 0; i < arr.length; i++) {
                        iarr[i] = arr[i];
                }

                for (int i = 0; i < iarr.length; i++) {
                        System.out.print(iarr[i]+",");
                }
        }
}

作者: 想好了再写    时间: 2012-1-2 18:45
Integer和int分别是引用类型和基本类型,在JDK5.0以后实现了自动打包和解包的功能,你无需自己打包就可以实现,Integer i = 3;当你那么 int[] a1= new int[3] ;Integer[]   i =a1;是会报错的,在java中数据也是一个对象,引用类型,而a1和i都是数组,所以他们都是对象,即引用类型,这个就不是打包和解包的问题了,对象类型不同是不能相互转换的{:soso_e100:}
作者: 沈样    时间: 2012-1-2 19:18
这两个不一样,一个是基本数据类型,一个是对象,在jvm可以自动帮你转化,Integer[] 这个是对象,可以这样定义数据吗,好像没有见过,对象的应该是用arrayList之类的存储的,基本数据类型是用数组存储,如果有不对请指出

作者: 罗全涛    时间: 2012-1-2 20:42
沈样 发表于 2012-1-2 19:18
这两个不一样,一个是基本数据类型,一个是对象,在jvm可以自动帮你转化,Integer[] 这个是对象,可以这样 ...

Integer[] 这个是对象,可以这样定义数据吗?可以,这个问题我查了查,
有这么几句话我觉得挺好的,大家一起学习学习吧!!
基本类型的一维数组可以被当作Objdect类型使用,不能当做Object[]类型使用;非基本数据类型的一维数组,既可以当做Object类型使用,又可以当做Object[]类型使用。
作者: 沈样    时间: 2012-1-2 22:14
罗全涛 发表于 2012-1-2 20:42
Integer[] 这个是对象,可以这样定义数据吗?可以,这个问题我查了查,
有这么几句话我觉得挺好的,大家 ...

谢谢学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2