java - Java 中一维数组的元素必须是原始数据类型吗?

标签 java arrays multidimensional-array types primitive-types

我的计算机编程老师声称在 Java 中:

The elements in a one-dimensional array must be of primitive data type

我已经进行了数小时的研究,但找不到任何陈述来支持这一说法。

我知道我可以用 Java 创建对象数组。 甚至 CLI 参数也通过 String 数组传递到程序中。

她的理由是,String[] 可以被视为多维字符数组。我可以理解这一点,但我不明白这如何适用于所有对象。

她接着说,一维数组无法容纳对象,因为容纳对象的数组会变成多维。

我无法理解 ObjectIntegerScanner 数组如何可以是多维的。

我现在很困惑,我错过了什么吗?

最佳答案

数组可以存储任何类型的元素 - 原始intlongfloat,包装器Integer,一个对象,例如StringPersonAnimal

您必须了解任何数组数据结构都应该存储为连续内存块,无论是任何内容,但是相同的数据类型。

  • 对于原始类型,它是实际值的连续 block , 即int数组中每个int占用4个字节,long数组 每个占用 8 个字节,依此类推。
  • 对于对象(字符串、人、动物)数组,该数组将存储所有这些对象的引用变量(这不是像 C++ 中的指针)对象和这些引用将位于连续的 block 中。

就像你有 Person p1 = new Person()Person p2 = new Person() 并存储在数组中 Person[] arr = { p1,p2}

arr会将引用p1p2存储在内存中,当你遍历数组时,你可以到达实际的p1p2>Person 对象,它本身可以是许多 String 或 int 值的混合(如 id、name、address 等)。所以这仍然给你带来了数组的效率。

这并不意味着arr以任何方式变得多维。

您可以在许多其他地方更详细地阅读此内容,然后回复您的老师。

关于java - Java 中一维数组的元素必须是原始数据类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49503489/

相关文章:

javascript - 查找包含数字的子数组的索引

c - "Wrong number of indices inside []": Why?

java - Gremlin 控制台无法初始化 neo4j2 嵌入式数据库

c++ - 在编译时解包数组范围 (C++11/14)

java - NetBeans NbPreferences API 在哪里存储其配置文件?

c++ - 如何将txt文件中的多个值输入数组C++

python - 将一个 numpy 列拆分为两列并将它们保留在原始数组中

javascript - 如何使用 jQuery 调用某个数组中的每个方法

java - Spring Boot 项目中的 application.properties 文件在哪里?

java - 在weakHashMap中,如果我更新或更改以前存储的键对象,垃圾收集器将删除键值对