java - 这是初始化数组的合法方法。但我如何访问它的元素呢?

标签 java arrays initialization

我正在准备入门级 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/

相关文章:

java - 重新架构应用程序以在多个服务器(JVM)上运行以提高性能

java - 什么是 NullPointerException,我该如何解决?

c++ - 确定合并排序中边数组的大小

java - 如何让一个循环重复另一个循环?

java - 在从类构造函数调用的方法中初始化最终变量

c++ - 错误 : no matching function for call to . .. 在返回语句

java - 程序抛出 OutOfMemoryError : Java heap space when run in Mac but not in Ubuntu

java日期格式与xquery xs :date format,不兼容如何解决?

javascript - 如何从父数组创建新数组?

c - 重温 C 中的字符串数组初始化