Java数组到底是什么?是物体吗?它是原始的吗?

Nos*_*tap 5 java arrays

可能的重复:
数组如何用Java实现?
为什么没有java.lang.Array类?如果Java数组是一个Object,它不应该扩展Object吗?

我最近在考虑Java数组,我想知道它们到底是什么?

他们是对象吗?

  • 您可以在它们上调用toString()(即使它只给您
    内存地址)
  • 下面的行编译Object a = new int[5];

但是,它们真的是对象吗?

  • 您通过new int[5]... 创建了一个新数组,就像我从未见过的构造函数。一个人会以为是new Array<Integer>(5)某种东西
  • 如果您查看Java API,将找不到array 类...您会发现,Array但这并不是一个真正的数组

以及它的可迭代属性

  • 您可以在for每个循环中遍历一个数组,但是iterator我找不到任何数组方法

我认为数组只是直接内置在Java语言中的一些特殊异常;但是,这也带来了一个问题:为什么对数组进行特殊处理?(为什么没有Array API?为什么有不同类型的构造函数?)

关于阵列的真实性质的任何澄清将不胜感激。

PS:我有几年Java经验,所以我知道如何使用数组以及它们的作用,我只是想问问它们的实现方式以及原因?