将整数变量引用到Object类的数组

时间:2014-07-18 12:36:14

标签: java

int arr[] = new int[2];
Object obj = arr;

以上代码有效但写作

Object obj[] = new Object[2];
int arr = obj;

给出编译时错误。为什么?我是Java的新手;任何人都能解释一下吗?

4 个答案:

答案 0 :(得分:1)

第一个是有效的,因为在Java中:数组是一个对象。

Arrays (The Java Tutorials)

  

数组是一个容器对象,它包含固定数量的单个类型的值。

但是,第二个,Object数组不是int,这就是它失败的原因。

答案 1 :(得分:0)

Java中的数组是对象,因此第一个代码段是有效的。另一方面,对象数组肯定不是int,因此第二个代码段失败。问问自己:如果要编译该片段,您期望arr能够持有什么?

来自JLS §10

  

在Java编程语言中,数组是对象(§4.3.1),是动态创建的,可以分配给Object 类型的变量(§4.3.2 )。

(强调我的)

答案 2 :(得分:0)

所有Arrays都是Objects。但所有Objects都不是arrays/ints

int arr[]=new int[2];
Object obj=arr;// valid . an int array is also an Object

Object obj[]=new Object[2];
        int arr=obj; // an int is not an Object array

答案 3 :(得分:0)

在第一种情况下,您创建的数组继承自Object,因此它可以按预期工作。

在第二种情况下,Java中的整数是基本类型,并且您尝试分配对象。原始类型不是Object,因此它永远不会起作用。