Is an array an object in Java?

前端 未结 12 1875
我寻月下人不归
我寻月下人不归 2020-11-22 14:26

In Java we can declare an array using the following:

String[] array = new String[10]; 
int size = array.length; 

Does this mean that the arra

12条回答
  •  时光取名叫无心
    2020-11-22 15:01

    1. An array is not an instance of any class listed in the class tree, however each array is an object and inherits directly from java.util.Object
    (new int[1]) instanceof Object   // -> evaluates to true
    
    1. The class java.util.Arrays is a helper class, and arrays are not instances of this class.
    (new int[1]) instanceof java.util.Arrays    // -> compile error
    
    1. The class java.lang.reflect.Array is a helper class, and arrays are not instances of this class.
    (new int[1]) instanceof java.lang.reflect.Array    // -> compile error
    
    1. Arrays inherit all the members of java.lang.Object

    2. Arrays override the method clone() inherited from Object.

    3. Arrays implement the field length, which contains the number of components of the array. length may be positive or zero. It is public and final.

    4. Arrays implement the interfaces Cloneable and java.io.Serializable.

    8a. Arrays are supported by Class. You can retrieve the Class instance from an array instance

    (new int[2]).getClass()

    or from an array type

    int[].class

    8b. A unique reflection class instance (ie an instance of java.lang.Class) is created for each different array type in your code. Examples

    int[].class.getCanonicalName()    //  -> "int[]"
    String[].class.getCanonicalName() //  -> "java.lang.String[]" /
    
    1. To repeat: Arrays are objects but are not instances of any class in the class tree.

    REFERENCES

    From the Java specification Section 4.3.1 Objects

    • An object is a class instance or an array.

    • A class instance is explicitly created by a class instance creation expression.

    • An array is explicitly created by an array creation expression.

    From java.util.Arrays

    • This class contains various methods for manipulating arrays (such as sorting and searching)

    From java.lang.reflect.Array

    • The Array class provides static methods to dynamically create and access Java arrays.

    From Section 10.1 Objects

    • The direct superclass of an array type is Object.

    • Every array type implements the interfaces Cloneable and java.io.Serializable.

    From Section 10.7 Array Members

    The members of an array type are all of the following:

    • The public final field length, which contains the number of components of the array. length may be positive or zero.

    • The public method clone, which overrides the method of the same name in class Object and throws no checked exceptions. The return type of the clone method of an array type T[] is T[].

    • A clone of a multidimensional array is shallow, which is to say that it creates only a single new array. Subarrays are shared.

    • All the members inherited from class Object; the only method of Object that is not inherited is its clone method.

提交回复
热议问题