【发布时间】:2014-07-18 12:36:14
【问题描述】:
int arr[] = new int[2];
Object obj = arr;
上面的代码是有效的,但是在写
Object obj[] = new Object[2];
int arr = obj;
给出编译时错误。为什么?我对 Java 完全陌生;谁能解释一下?
【问题讨论】:
标签: java
int arr[] = new int[2];
Object obj = arr;
上面的代码是有效的,但是在写
Object obj[] = new Object[2];
int arr = obj;
给出编译时错误。为什么?我对 Java 完全陌生;谁能解释一下?
【问题讨论】:
标签: java
第一个是有效的,因为在 Java 中:数组是一个对象。
数组是一个容器对象,包含固定数量的单一类型值。
但是,第二个,Object 数组不是int,这就是它失败的原因。
【讨论】:
所有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
【讨论】:
在第一种情况下,您创建的数组继承自 Object,因此它按预期工作。
在第二种情况下,Java 中的整数是原始类型,您尝试分配一个对象。原始类型不是 Object,所以它永远不会起作用。
【讨论】: