数组是如何在java中实现的?

2022-09-01 21:10:20

数组在java中作为对象实现对吗?如果是这样,我在哪里可以查看数组类的源代码。我想知道数组中的长度变量是否被定义为常量,如果是这样,为什么它不是全大写字母LONG以使代码更易于理解。


答案 1

尽管数组是对象,因为它们继承了java.lang.Object,但这些类是作为语言的特殊功能动态创建的。它们未在源代码中定义。

请考虑以下数组:

MySpecialCustomObject[] array;

没有这样的源代码。您已经在代码中动态地创建了它。

长度是小写和字段的原因实际上是关于后来的Java编码标准在开发时不存在的事实。如果今天正在开发一个数组,它可能是一种方法:getLength()。

Length 是在对象构造时定义的最终字段,它不是一个常量,因此一些编码标准不希望它是大写的。然而,一般来说,在今天的Java中,一切通常要么以大写常量的形式完成,要么用公共getter方法标记为私有,即使它是最终的。


答案 2

对于我们声明的每个数组,Java中都有相应的类,但对我们来说不可用。你可以使用 getClass().getName() 来查看这些类。

    int[] arr=new int[10];
    System.out.println(arr.getClass().getName());

输出 : [I

其中“[”表示一维数组,“I”表示整数。同样,我们可以有

    [F for one-dimensional float arrays
    [Z for one-dimensional boolean arrays
    [J for one-dimensional long arrays
    [[I for two-dimensional int arrays

等等。