我的计算机编程老师声称在 Java 中:
The elements in a one-dimensional array must be of primitive data type
我已经进行了数小时的研究,但找不到任何陈述来支持这一说法。
我知道我可以用 Java 创建对象数组。 甚至 CLI 参数也通过 String
数组传递到程序中。
她的理由是,String[]
可以被视为多维字符数组。我可以理解这一点,但我不明白这如何适用于所有对象。
她接着说,一维数组无法容纳对象,因为容纳对象的数组会变成多维。
我无法理解 Object
、Integer
和 Scanner
数组如何可以是多维的。
我现在很困惑,我错过了什么吗?
最佳答案
数组可以存储任何类型的元素 - 原始int
或long
或float
,包装器Integer
,一个对象,例如String
、Person
、Animal
等
您必须了解任何数组数据结构都应该存储为连续内存块,无论是任何内容,但是相同的数据类型。
- 对于原始类型,它是实际值的连续 block , 即int数组中每个int占用4个字节,long数组 每个占用 8 个字节,依此类推。
- 对于对象(字符串、人、动物)数组,该数组将存储所有这些对象的引用变量(这不是像 C++ 中的指针)对象和这些引用将位于连续的 block 中。
就像你有 Person p1 = new Person()
和 Person p2 = new Person()
并存储在数组中 Person[] arr = { p1,p2}
。
arr会将引用p1和p2存储在内存中,当你遍历数组时,你可以到达实际的p1和p2>Person 对象,它本身可以是许多 String 或 int 值的混合(如 id、name、address 等)。所以这仍然给你带来了数组的效率。
这并不意味着arr以任何方式变得多维。
您可以在许多其他地方更详细地阅读此内容,然后回复您的老师。
关于java - Java 中一维数组的元素必须是原始数据类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49503489/