在Java中,数组作为对象的语义是什么?

时间:2016-04-23 07:01:26

标签: java arrays object

根据这个问题(Is an array an object in java),数组被认为是Java中的对象。

该问题的答案主要引用了语言规范。我的问题是该对象有哪些方法和字段?我可以直接实例化它(int[] myArr = new Array<int>()或类似的东西)吗?简而言之,它是如何运作的?

快速搜索没有结果。我看到Arrays对象的JavaDoc(用于排序数组等),而Array没有JavaDoc。

编辑:

为了清楚起见,我并没有尝试第一次学习使用数组。我在问一个关于java语言机制的问题。我知道我可以创建一个数组:

int[] a = new int[3];

我问是否有不同的方法 - 因为它是一个对象,是否有一个对象构造函数可以工作?是否有关于数组对象的文档?

3 个答案:

答案 0 :(得分:4)

数组具有公共最终length属性。它们实现了CloneableSerializable接口。当然,他们继承了Objectequals()hashCode()wait()等所有方法。

在您尝试提问时,没有可用于构建实例的类。实例化它们的语法是

int[] myArr = new int[someLength];

或者,用非默认值填充它们;

int[] myArr = new int[] {1, 2, 3};

您也可以使用

int[] myArr = {1, 2, 3};

但请注意,您不能使用此短语法为先前声明的变量赋值。即你可以做到

myArr = new int[] {1, 2, 3};

但不是

myArr = {1, 2, 3};

答案 1 :(得分:1)

Bozho的摘录回答了类似的问题 Why isn't there a java.lang.Array class? If a java array is an Object, shouldn't it extend Object?

  

数组是一种语言功能 - 它们具有特定的语法   声明和访问。他们的类定义是隐藏的   你。

     

他们在refleciton API中有代表 -   java.lang.reflect.Array中

答案 2 :(得分:0)

您可以使用与任何其他Class对象类似的方式声明数组。

如果您在申报时无法确定阵列的大小,那么您可以这样做---

class ArrayExample
{
int arr[];
public static void main()
{
//take length as input from the user
arr=new int[anylength];
//now do whatever you want to do with this array object
}
}