我正在准备入门级 Oracle 认证 - OCA - Java 程序员 I,因为他们要求人们在参加下一个之前先考这一门(以前可以直接考 SCJP,相当于 OCP) - Java程序员II)
我在数组初始化时遇到了这个问题,这让我有点困惑。显然,可以像这样声明和初始化一个数组:
Object[] objects = { new Object[1], new Object[34] };
由于数组是对象,因此可以将对象数组粘贴到对象数组中。您可以通过执行 objects[0]
或 objects[1]
轻松获取一个或另一个对象数组,但是您会从哪里开始呢?您将如何从存储在 objects[1]
下的对象数组中访问第 16 个对象?
基本上,我的问题可以简化为:
Object o = new Object[100];
上面的内容可以编译通过。然而,如何访问对象数组o
中的各个对象呢?
最佳答案
Object[]
也是一个 Object
,这就是您声明的原因
Object o = new Object[100];
works.* 不过,要访问元素,您需要将其转换回 Object[]
。例如:
Object elt = ((Object[]) o)[3];
您的原始声明:
Object[] objects = { new Object[1], new Object[34] };
您必须执行类似的操作才能访问 objects[1]
的第 16 个元素:
Object elt = ((Object[]) (objects[1]))[15];
当然,您可以通过声明来避免所有这些转换:
Object[][] objects = { new Object[1], new Object[34] };
首先。然后你就可以执行objects[1][15]
。
* 请注意,这仅适用于 Object
,它作为 Java 中对象层次结构的根具有特殊地位。 Integer[]
无法分配给 Integer
变量。
关于java - 这是初始化数组的合法方法。但我如何访问它的元素呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15504095/