在Java中,一维数组的元素必须是原始数据类型吗?
我的计算机编程老师用Java说: 一维数组中的元素必须是基元数据类型 我做了数小时的研究,但找不到任何支持这一说法的陈述。 我知道我可以用Java制作对象数组。甚至CLI参数也通过在Java中,一维数组的元素必须是原始数据类型吗?,java,arrays,multidimensional-array,types,primitive-types,Java,Arrays,Multidimensional Array,Types,Primitive Types,我的计算机编程老师用Java说: 一维数组中的元素必须是基元数据类型 我做了数小时的研究,但找不到任何支持这一说法的陈述。 我知道我可以用Java制作对象数组。甚至CLI参数也通过字符串数组传递到程序中 她的理由是String[]可以看作是一个多维字符数组。我可以理解这一点,但我看不出这如何适用于所有对象 她接着说,一维数组不能容纳对象,因为容纳对象的数组变成了多维数组 我无法理解对象、整数和扫描仪的数组是如何多维的 我现在很困惑,我遗漏了什么吗?你的老师完全错了 例如,可以有一个BigDeci
字符串
数组传递到程序中
她的理由是String[]
可以看作是一个多维字符数组。我可以理解这一点,但我看不出这如何适用于所有对象
她接着说,一维数组不能容纳对象,因为容纳对象的数组变成了多维数组
我无法理解对象
、整数
和扫描仪
的数组是如何多维的
我现在很困惑,我遗漏了什么吗?你的老师完全错了 例如,可以有一个
BigDecimal
数组:
BigDecimal[] numbers = { BigDecimal.ZERO, BigDecimal.ONE };
或人的数组
:
Person[] people = { new Person("John", 20), new Person("Jane", 21) };
人
为:
class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// TODO getters
}
你的老师完全错了 例如,可以有一个
BigDecimal
数组:
BigDecimal[] numbers = { BigDecimal.ZERO, BigDecimal.ONE };
或人的数组
:
Person[] people = { new Person("John", 20), new Person("Jane", 21) };
人
为:
class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// TODO getters
}
数组可以存储任何类型的元素——原语
int
或long
或float
,包装器整数
,对象如字符串
,人
,动物
,等等
您必须了解,任何数组数据结构都要存储为连续的内存块,无论它是什么,但数据类型相同
- 对于基元类型,它是实际值的连续块, i、 例如,int数组将每个int占用4个字节,数组长度为 每个都将占用8个字节,以此类推
- 对于对象数组(字符串、人、动物),数组将存储指向所有这些对象的引用变量(这不是C++中的指针),这些引用将位于连续块中
Person p1=new Person()
和Person p2=new Person()
并存储在数组Person[]arr={p1,p2}
中
arr将把引用p1和p2存储在内存中,当您遍历数组时,可以到达实际的Person对象,它本身可以是许多字符串或int值(如id、name、address等)的混合体。因此,这仍然可以提供阵列的效率
这并不意味着arr在任何方面都是多维的
你可以在许多其他地方更详细地了解这一点,然后再联系你的老师。数组可以存储任何类型的元素——原语
int
或long
或float
,包装器Integer
,像字符串
,人
,动物
,等等
您必须了解,任何数组数据结构都要存储为连续的内存块,无论它是什么,但数据类型相同
- 对于基元类型,它是实际值的连续块, i、 例如,int数组将每个int占用4个字节,数组长度为 每个都将占用8个字节,以此类推
- 对于对象数组(字符串、人、动物),数组将存储指向所有这些对象的引用变量(这不是C++中的指针),这些引用将位于连续块中
Person p1=new Person()
和Person p2=new Person()
并存储在数组Person[]arr={p1,p2}
中
arr将把引用p1和p2存储在内存中,当您遍历数组时,可以到达实际的Person对象,它本身可以是许多字符串或int值(如id、name、address等)的混合体。因此,这仍然可以提供阵列的效率
这并不意味着arr在任何方面都是多维的
你可以在许多其他地方更详细地了解这一点,然后再联系你的老师。一维数组中的元素必须是原始数据类型,没有。不这是完全错误的。这正是我所想的,我使用Java已经4年了,甚至从来没有听说过这个。我只是把这篇文章贴在这里,因为我的全班同学都接受了这篇文章,没有升起任何旗帜,我想知道我是否一直在错过一些东西……这肯定是错的。根据这个链接。你可以在那个页面上搜索“对象数组”。你的老师需要一位老师教她的Java。一维数组中的元素必须是原始数据类型,没有。不这是完全错误的。这正是我所想的,我使用Java已经4年了,甚至从来没有听说过这个。我只是把这篇文章贴在这里,因为我的全班同学都接受了这篇文章,没有升起任何旗帜,我想知道我是否一直在错过一些东西……这肯定是错的。根据这个链接。你可以在那个页面上搜索“对象数组”,你的老师需要一位老师教她的Java。