我的计算机编程老师声称用Java:
一维数组中的元素必须是基本数据类型
我已经完成了数小时的研究,但我无法找到任何语句来支持此声明。
我知道我可以用Java创建对象数组。 甚至CLI参数也通过String
数组传递到程序中。
她的理由是String[]
可以被视为多维字符数组。我能理解这一点,但我看不出它如何适用于所有对象。
她接着说,一维数组不能保存对象,因为保存对象的数组变得多维。
我无法理解Object
,Integer
和Scanner
的数组如何是多维的。
我现在很困惑,我错过了什么吗?
答案 0 :(得分:1)
你的老师是完全错的。
例如,您可以拥有一个BigDecimal
数组:
BigDecimal[] numbers = { BigDecimal.ZERO, BigDecimal.ONE };
或Person
:
Person[] people = { new Person("John", 20), new Person("Jane", 21) };
Person
为:
class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// TODO getters
}
答案 1 :(得分:1)
数组可以存储任何类型的元素 - 原始int
或long
或float
,包装Integer
,像这样的对象String
,Person
,Animal
等
您必须了解任何数组数据结构都应存储为连续内存块,无论是什么,但相同的数据类型。
如果您拥有Person p1 = new Person()
和Person p2 = new Person()
并存储在数组Person[] arr = {p1, p2}
中,就像这样。
arr 将 p1 和 p2 存储在内存中,当您遍历数组时,您可以访问实际的 Person 对象,它本身可以是许多String或int值的混合(如id,name,address等)。所以这仍然可以提供数组的效率。
这并不意味着 arr 以任何方式变得多维。
您可以在其他许多地方详细了解此信息并与老师联系。