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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class ReflactPrint {
  2. public static void main(String[] args) {

  3. int[] arr = new int[4];

  4. String[] str = new String[]{"a","b","e"};

  5. Object[] o1 = arr;       // 为什么这里 Object类型的数组不能接收 arr ,  数组不是引用型变量吗?

  6. Object o = arr;          // 这里是OK的

  7. Object[] o2 = str;         //这里也是ok的

  8. System.out.println(Arrays.asList(str));    // 这样将数组转换成集合打印 ok 的

  9. System.out.println(Arrays.asList(o));  //   这样将数组转换成集合打印 报异常

  10. }
复制代码

5 个回复

倒序浏览
08.Object[] o1 = arr;       //数组不是类。数组是数组,类是类。对象是类的实例,数组可以是对象的数组,方法的参数可以是对象,也可以是数组。
                        //所以,Object 类不能接受数组。
回复 使用道具 举报
元素为基本数据类型的数组会被当成一个对象,而不是很多对象组成的。
回复 使用道具 举报
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是其包装类,注意是一个类。
回复 使用道具 举报
Java允许把所有任何类型的对象赋给Object类型的变量,08.Object[] o1 = arr;//错误,Object[]默认是String型的,所以会报不兼容类型
回复 使用道具 举报
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值。

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