黑马程序员技术交流社区
标题:
任意对象都可以用Object 来接收? 为什么挂了呢?
[打印本页]
作者:
金肖
时间:
2012-5-15 07:36
标题:
任意对象都可以用Object 来接收? 为什么挂了呢?
public class ReflactPrint {
public static void main(String[] args) {
int[] arr = new int[4];
String[] str = new String[]{"a","b","e"};
Object[] o1 = arr; // 为什么这里 Object类型的数组不能接收 arr , 数组不是引用型变量吗?
Object o = arr; // 这里是OK的
Object[] o2 = str; //这里也是ok的
System.out.println(Arrays.asList(str)); // 这样将数组转换成集合打印 ok 的
System.out.println(Arrays.asList(o)); // 这样将数组转换成集合打印 报异常
}
复制代码
作者:
朱晓辉
时间:
2012-5-15 07:47
08.Object[] o1 = arr; //数组不是类。数组是数组,类是类。对象是类的实例,数组可以是对象的数组,方法的参数可以是对象,也可以是数组。
//所以,Object 类不能接受数组。
作者:
李哲
时间:
2012-5-15 07:50
元素为基本数据类型的数组会被当成一个对象,而不是很多对象组成的。
作者:
胡团乐
时间:
2012-5-15 08:07
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from int[] to Object[]
04.int[] arr = new int[4]; //这里是int基本类型型数组
08.Object[] o1 = arr; //这里是Object类型数组
改成
04.Integer[] arr = new Integer[4]; //这里是Integer类型数组
08.Object[] o1 = arr; //这里是Object类型数组
这样就好了
int 是基本数据类型
Integer是其包装类,注意是一个类。
作者:
古银平
时间:
2012-5-15 08:19
Java允许把所有任何类型的对象赋给Object类型的变量,08.Object[] o1 = arr;//错误,Object[]默认是String型的,所以会报不兼容类型
作者:
梁清平
时间:
2012-5-15 08:43
import java.util.*;
public class ReflactPrint {
public static void main(String[] args) {
int[] arr = new int[4];
String[] str = new String[]{"a","b","e"};
Object[] o1 = arr;
Object o = arr;
Object[] o2 = str;
System.out.println(Arrays.asList(str));
System.out.println(Arrays.asList(o));
}
}
第一,你的程序没导包,一定会出很多问题。
第二,你在贴子里的代码少了个括号,是不是copy时不小心了?
第三,引用型变量的定义是除基础类型的变量外都是,而不是所有引用类型就是指向对象。Object[] 这样的定义相当于是定义了一个Object型的数组,跟int型的数组arr是无法赋值的。最后一句是没有错的,这个跟数组实质上没关系,相当于让o也指向了int数组,打出来的是hash值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2