【发布时间】:2020-09-11 17:09:11
【问题描述】:
请看下面的代码。
class Use
{
public static void main(String[] args)
{
String[] result = new String[2];//{"Hello", "World"}; // compiles and run
Object[] name = result; // compiles and run
// result = name; //CE
System.out.println(result);
System.out.println(name);
}
}
我的理解是Java中的数组是独立的对象,没有父子关系。所以在我看来,“结果”和“名称”是两种完全不同类型的对象(即 String[] 和 Object[])的引用变量,它们没有任何关系。那么
- 为什么语句“Object[] name = result;”没有错误?
- 为什么语句“result = name;”中有错误?
- 我知道“对象”和“字符串”有父子关系。 “Object[]”和“String[]”有什么关系吗?
【问题讨论】:
-
如果我做
name = new Integer[]{1}; result = name;怎么办?Object[]不是String[] -
'Object[] name = new Integer[]{1};` 是合法的,因为 Integer 继承自 Object。
Object[]数组与String[]数组不同。 -
除了搜索关于 SO 的现有问题和答案外,您还可以在 Java 语言规范 中找到问题的明确答案,docs.oracle.com/javase/specs/index.html .
-
不要忘记接受答案,并在回答您的问题时投票。这样,您的问题就不再显示为未回答。
标签: java arrays type-conversion typecasting-operator