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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 罗全涛 于 2012-1-2 20:45 编辑

我们知道 Integer i = 3;编译时不会报错,是因为java提供了基本数据类型的自动装箱和拆箱功能。
那么 int[] a1= new int[3] ;当我做如下操作时报错:Integer[]   i =a1;
提示:不能将int[]数组转换成Integer[]类型,
不知道其中的缘由,大家帮忙看看吧?
integer和int直接赋值可以,问题是他们对应的数组赋值是发生错误,重点在数组????

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

8 个回复

倒序浏览
int 是基本数据类型,而Integer是引用数据类型。两者是不一样的!不能混为一谈!

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 林晓波 于 2012-1-2 18:00 编辑

int 是基本类型,直接存数值
integer是对象,用一个引用指向这个对象
他们是两种不同的数据类型
java1.5以上版本,int和Integer之间的转换是由JVM自己实现的,不需要手工转换,因此int数组和Integer数组虽然不能直接转换,但是在使用时没什么区别的。 如果非要转的话,那只能循环将int数组中的内容设置到Integer中吧,但这对于java1.5以上就没什么意义了

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
integer和int直接赋值可以,问题是他们对应的数组赋值是发生错误,重点在数组????
回复 使用道具 举报
这个我们可以这么做——用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]+",");
                }
        }
}
回复 使用道具 举报
Integer和int分别是引用类型和基本类型,在JDK5.0以后实现了自动打包和解包的功能,你无需自己打包就可以实现,Integer i = 3;当你那么 int[] a1= new int[3] ;Integer[]   i =a1;是会报错的,在java中数据也是一个对象,引用类型,而a1和i都是数组,所以他们都是对象,即引用类型,这个就不是打包和解包的问题了,对象类型不同是不能相互转换的{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
沈样 黑马帝 2012-1-2 19:18:01
7#
这两个不一样,一个是基本数据类型,一个是对象,在jvm可以自动帮你转化,Integer[] 这个是对象,可以这样定义数据吗,好像没有见过,对象的应该是用arrayList之类的存储的,基本数据类型是用数组存储,如果有不对请指出
回复 使用道具 举报
沈样 发表于 2012-1-2 19:18
这两个不一样,一个是基本数据类型,一个是对象,在jvm可以自动帮你转化,Integer[] 这个是对象,可以这样 ...

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

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