Est un tableau un object en Java

En java on peut déclarer un tableau comme

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

Est-ce que cela signifie que le tableau lui-même est un object? Car en C ++, un tableau est juste un pointeur et n’a aucune méthode.

Oui.

La section 4.3.1 de la spécification du langage Java commence par:

Un object est une instance de classe ou un tableau.

Oui; la spécification de langage Java écrit :

Dans le langage de programmation Java, les tableaux sont des objects (§4.3.1), créés dynamicment et peuvent être affectés à des variables de type Object (§4.3.2). Toutes les méthodes de la classe Object peuvent être appelées sur un tableau.

Eh bien, demandons Java!

 public class HelloWorld { public static void main(Ssortingng[] args) { System.out.println(args instanceof Object); int[] someIntegers = new int[] {42}; System.out.println(someIntegers instanceof Object); } } 

Sortie:

 true true 

Oui, c’est un object en Java.

Notez également que lorsque vous faites array.length vous array.length aucune méthode mais array.length simplement au champ de length du tableau. Il existe de nombreuses méthodes statiques dans la classe Arrays .

Je dirais que la réponse est oui, bien que je puisse append que, à proprement parler, un tableau est aussi un object en C ++. Du §1.8 [intro.object] du standard actuel (FDIS):

Un object est une région de stockage.

Il est important de noter que les tableaux en Java ont leurs propres codes d’octets qu’ils ne partagent pas avec les objects. Ce sont certainement des objects, mais ils sont traités légèrement différemment au niveau inférieur.

Je veux juste append que les tableaux ont une représentation dans l’API de reflection – java.lang.reflect.Array .

Chaque tableau de Java est un object ex int [] a = new int [2]; Donc, new est utilisé pour créer un object et comme c’est un object, nous pouvons vérifier le nom de la classe en utilisant a.getClass (). GetName ();