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

在Java中,一维数组的元素必须是原始数据类型吗?,java,arrays,multidimensional-array,types,primitive-types,Java,Arrays,Multidimensional Array,Types,Primitive Types,我的计算机编程老师用Java说: 一维数组中的元素必须是基元数据类型 我做了数小时的研究,但找不到任何支持这一说法的陈述。 我知道我可以用Java制作对象数组。甚至CLI参数也通过字符串数组传递到程序中 她的理由是String[]可以看作是一个多维字符数组。我可以理解这一点,但我看不出这如何适用于所有对象 她接着说,一维数组不能容纳对象,因为容纳对象的数组变成了多维数组 我无法理解对象、整数和扫描仪的数组是如何多维的 我现在很困惑,我遗漏了什么吗?你的老师完全错了 例如,可以有一个BigDeci

我的计算机编程老师用Java说:

一维数组中的元素必须是基元数据类型

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

我知道我可以用Java制作对象数组。甚至CLI参数也通过
字符串
数组传递到程序中

她的理由是
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。